Informatika3-2024/Hazi3

A MathWikiből

A házik beadásához küldjétek el a megoldásokat (.c, .cpp, ha van .h és .hpp file-ok) csatolva a következõ emailcímre: tofihomework+2024info3hu@gmail.com

A lefordított programokat nem kell elküldeni. Ha úgy érzitek túl sok file-t küldenétek (5+) akkor bedobhatjátok egy zip-be, de nem muszáj.

Egyedi

Írjunk C++ függvényt ami a kapott int tömbbõl készít egy olyan másolatot amiben minden elem egyedi. Azaz minden értéknek csak az elsõ elõfordulását hagyja meg. Majd ezt az új tömböt visszaadja.

A függvény feje valahogy így nézhet ki (nem muszáj ezeket a változó neveket használni):

int* egyedi(int t[], int n, int *m);

A bemeneti tömb a t, ennek a hossza n és a kiemeneti tömb hosszát adjuk át az m pointeren keresztül (elsõ háziban csináltatok hasonlót).

Például az {1, 5, 4, 2, 2, 4, 3, 6, 2, 7} tömbre az {1, 5, 4, 2, 3, 6, 7} tömböt adná vissza.

Ne féljetek cout kiírásokat tenni mindenfelé a kódba amikor még tesztelitek és esetleg hibát kerestek benne. Nagyon hasznos tud lenni, ha látjátok mi is történik.

Tipp a lap alján (ha van rá idõtök/kitartásotok, elõször próbáljátok meg nélküle megoldani/végiggondolni).

































































Az elsõ nehézség, hogy tudné kéne mekkora tömböt hozzunk létre. Itt illene rögtön jó méretû tömböt visszaadni. Ehhez egy ötlet: hozzunk létre egy segéd tömböt, ami akkora mint a kapott tömb, ebben fogunk dolgozni és a legvégén ez alapján megcsináljuk a végleges tömbünket már jó mérettel és ezt az ideiglenest felszabadítjuk.

Ezen túl az algoritmus nem túl bonyolult, egy ciklussal megyünk végig az eredeti tömbön és az új (ideiglenes) tömbbe írjuk az elemeket, de minden egyes új elemnél vizsgáljuk, hogy szerepel-e már az új tömbünkben. Ehhez a teszteléshez írhattok új függvényt is, vagy helyben is meg lehet oldani mégegy ciklussal. Mint a 2. házinál, itt is érdemes 2 ciklus változót használni, 1-et a kapott tömbre, 1-et az újonnan készítettre (hisz amikor kihagyunk egy elemet a kapottból, akkor elcsúszik a 2 tömb indexelése).

Személyes eszközök