ОО1/Септембар 1 2025 — разлика између измена
Нема описа измене |
Нема описа измене |
||
| Ред 1: | Ред 1: | ||
{{tocright}} | {{tocright}} | ||
'''Испит у септембарском 1 року 2025. године''' одржан је 18. септембра и трајао је 90 минута. Сваки задатак носи по 5 поена. | |||
'''Испит у септембарском 1 року 2025. године''' одржан је 18. септембра и трајао је 90 минута. Сваки задатак | {{rešenja}} | ||
== 1. задатак == | == 1. задатак == | ||
=== Поставка === | === Поставка === | ||
| Ред 64: | Ред 63: | ||
== 6. задатак == | == 6. задатак == | ||
=== Поставка === | === Поставка === | ||
Класу X опремити оператором конверзије X* која може радити и имплицитно, тако да враћа показивач на објекат те класе који се конвертује. Кратким примером илустровати употребу ове конверзије. | |||
=== Решење === | === Решење === | ||
class X{ | |||
private: | |||
int val; | |||
public: | |||
X(int v=0): val(v){} | |||
operator X*(){ | |||
return this; | |||
} | |||
void print(){ | |||
cout<<val; | |||
} | |||
} | |||
int main(){ | |||
X x = new X(5); | |||
X* px = x; | |||
pc->print(); | |||
return 0; | |||
} | |||
[[Категорија:Рокови]] | [[Категорија:Рокови]] | ||
[[Категорија:OO1]] | [[Категорија:OO1]] | ||
Верзија на датум 28. септембар 2025. у 20:08
Испит у септембарском 1 року 2025. године одржан је 18. септембра и трајао је 90 минута. Сваки задатак носи по 5 поена.
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
1. задатак
Поставка
У неком прoграму обpaђуje се више инстанци бинарниx стабала коjа се састоjе од чворова у коjима су одређени подаци. Клијенти обраду траже за дато стабло. Постоjи више различитик врста обрада коjе се, између осталог, састоjе и од различитих редоследа обиласка стабла (preorder, inorder, postorder), при чему се у будућности могу додавати нови начини обраде. Начин обраде може се конфигурисати за сваку поjединачну инстанцу стабла. Осмислии класе, њихове атрибуте и релациjе и распоредити одговорности по тим класамa.
Решење
2. задатак
Поставка
Приказати како би следећи део програма био имплементиран на језику C++.
typedef struct {
ListElem* next;
T t;
} ListElem;
void ListElem_init (ListElem* e, T t) { e->next=0; e->t=t; }
void ListElem_linkToPrev (ListElem* e, ListElem* prev) {
if (prev) { e->next = prev->next; prev->next = e; }
}
Решење
3. задатак
Поставка
Прецизно објаснити шта је проблем у следећем делу програма:
char* readln () {
static char buffer [256];
int ch getchar(), i = 0;
while (ch!=EOF && ch!='\n') {
buffer[i++]=ch;
ch = getchar();
}
buffer[i]='\0';
return buffer;
}
Решење
Може се десити индексирање ван домена.
4. задатак
Поставка
Написати изразе којима се целобројна променљива i увећаваза 1 посредством варијабли x, y и z респективно.
int i=0, *x=&i, &y=i, *&z=x;
Решење
(*x)++; y++; (*z)++;
5. задатак
Поставка
Класу X опремити декларацијама (не и дефиницијама) подразумеваног конструктора, конструктора копије, оператора доделе копирањем, оператора доделе премештањем и виртуелног деструктора.
Решење
class X{
public:
X() = default();
X(const X&);
X& operator =(const X&);
X& operator =(X&&);
virtual ~X();
}
6. задатак
Поставка
Класу X опремити оператором конверзије X* која може радити и имплицитно, тако да враћа показивач на објекат те класе који се конвертује. Кратким примером илустровати употребу ове конверзије.
Решење
class X{
private:
int val;
public:
X(int v=0): val(v){}
operator X*(){
return this;
}
void print(){
cout<<val;
}
}
int main(){
X x = new X(5);
X* px = x;
pc->print();
return 0;
}