neděle 22. března 2009

2. úkol

Tak uplynulo pár týdnů a je čas na další úkol, který by měl otestovat vaše schopnosti. Na cvičení jsme tvořili obousměrný seznam, nyní je úkolem implementovat dynamické pole.

Tedy strukturu, ke které lze přistupovat pomocí indexu (a testuje zda je index v mezích pole).
  • Získání prvku (dle indexu) by mělo fungovat v čase O(1)
  • Odebrání prvku z libovolného místa v čase O(n) - odebírání bude posouvat existující prvky
  • Přidání prvku na libovolné místo v čase O(n) - přidání bude také posouvat existující prvky
  • Při překročení vyhrazené paměti si objekt vyhradí dvojnásobek paměti.
  • Při zmenšení obsazení paměti na 1/4 objekt část paměti zas uvolní (1/2).
  • Objekt si může na začátku vyhradit paměť pro minimální počet položek.
  • Při svém zániku objekt uvolní veškerou svou paměť.
  • Objekt půjde zkopírovat (hluboká kopie).
  • A bude obsahovat operátory pro porovnání ==, !=
  • Při přidání prvku za konec pole, přístupu k neex. prvku, nebo odebrání neexistujícího prvku vyvolejte výjimku.
Testy
Na poli proveďte následující test použití.
  1. vytvoření prázdného pole1
  2. přidání 1000 prvků na náhodné indexy do pole1.
  3. pole2(pole1) - zkopírování pole
  4. test pole2 == pole1
  5. odebrání 1 prvku z pole2
  6. test pole2 != pole1
  7. odebrání všech prvků z pole2 náhodným způsobem
  8. uvolnění obou polí
Dobrovolné frajeřinky
  1. vlastní dopředný iterátor
  2. vytvoření šablonou s parametrem vnitřního typu

Formát odevzdání
  • poslat email na "jahodfra na seznamu"
  • předmět emailu nastavit na "PRC2 ukol2"
  • odeslat pouze nezabalené soubory zdroj. kódu - ideálně 2-3 soubory
  • cením si pokud program půjde bez ladění zkompilovat pod g++

2 komentáře:

  1. Ahoj, nevim, jak se dostat k prvnimu ukolu, muzes mi prosim poradit? Dekuji a preji pekny den, JS.

    OdpovědětVymazat
  2. Omlouvam se za spam, uz jsem to samozrejme nasla. Omlouvam se, jsem zacatecnik, tak trochu tapu.

    OdpovědětVymazat