OO1/Septembar 1 2025

Izvor: SI Wiki
< ОО1
Datum izmene: 28. septembar 2025. u 20:16; autor: Andrej (razgovor | doprinosi) (Andrej преместио је страницу OO1/Септембар 1 2025 на ОО1/Септембар 1 2025)
Pređi na navigaciju Pređi na pretragu

Ispit u septembarskom 1 roku 2025. godine održan je 18. septembra i trajao je 90 minuta. Svaki zadatak nosi po 5 poena.

1. zadatak

Postavka

U nekom programu obpađuje se više instanci binarnix stabala koja se sastoje od čvorova u kojima su određeni podaci. Klijenti obradu traže za dato stablo. Postoji više različitik vrsta obrada koje se, između ostalog, sastoje i od različitih redosleda obilaska stabla (preorder, inorder, postorder), pri čemu se u budućnosti mogu dodavati novi načini obrade. Način obrade može se konfigurisati za svaku pojedinačnu instancu stabla. Osmislii klase, njihove atribute i relacije i rasporediti odgovornosti po tim klasama.

Rešenje

2. zadatak

Postavka

Prikazati kako bi sledeći deo programa bio implementiran na jeziku 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; }
}

Rešenje

3. zadatak

Postavka

Precizno objasniti šta je problem u sledećem delu programa:

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;
}

Rešenje

Može se desiti indeksiranje van domena.

4. zadatak

Postavka

Napisati izraze kojima se celobrojna promenljiva i uvećavaza 1 posredstvom varijabli x, y i z respektivno.

int i=0, *x=&i, &y=i, *&z=x;

Rešenje

(*x)++;
y++;
(*z)++;

5. zadatak

Postavka

Klasu X opremiti deklaracijama (ne i definicijama) podrazumevanog konstruktora, konstruktora kopije, operatora dodele kopiranjem, operatora dodele premeštanjem i virtuelnog destruktora.

Rešenje

class X{
public:
   X() = default();
   X(const X&);
   X& operator =(const X&);
   X& operator =(X&&);
   virtual ~X();
}

6. zadatak

Postavka

Klasu X opremiti operatorom konverzije X* koja može raditi i implicitno, tako da vraća pokazivač na objekat te klase koji se konvertuje. Kratkim primerom ilustrovati upotrebu ove konverzije.

Rešenje

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;
}