Informatika3-2024/Hazi5
(Új oldal, tartalma: „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 le…”) |
|||
3. sor: | 3. sor: | ||
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. | 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. | ||
− | ==== Halmaz | + | ==== Halmaz ==== |
'''Ez a feladat a [http://wiki.math.bme.hu/view/Informatika3-2024/Hazi6 6. házi] eleje, be lehet küldeni õket egyben vagy csak az 5. házit. Együtt természetesen két házinak számít így 2szer annyi pontot ér. Ha tervezzük a 6.-at is beadni akkor érdemes annak az oldalát nézni, mert tartalmaz mindent ami itt is le van írva.''' | '''Ez a feladat a [http://wiki.math.bme.hu/view/Informatika3-2024/Hazi6 6. házi] eleje, be lehet küldeni õket egyben vagy csak az 5. házit. Együtt természetesen két házinak számít így 2szer annyi pontot ér. Ha tervezzük a 6.-at is beadni akkor érdemes annak az oldalát nézni, mert tartalmaz mindent ami itt is le van írva.''' |
A lap 2024. május 3., 03:12-kori változata
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.
Halmaz
Ez a feladat a 6. házi eleje, be lehet küldeni õket egyben vagy csak az 5. házit. Együtt természetesen két házinak számít így 2szer annyi pontot ér. Ha tervezzük a 6.-at is beadni akkor érdemes annak az oldalát nézni, mert tartalmaz mindent ami itt is le van írva.
Írjunk halmaz osztályt, ami fix méretû egész számok halmazt tud reprezentálni.
- Létrehozáskor kelljen megadni a halmaz maximális méretét. Azaz, hogy maximum hány elem fér bele.
- Lehessen hozzáadni új elemet. Ha az adott szám már benne van a halmazban, akkor ne adja hozzá újra és adjon vissza false-t. Ha az elem még nincs benne, akkor adja hozzá és adjon vissza true-t.
- Oldjuk meg, hogy lehessen hozzáadni halmazhoz egész számot a + mûvelettel. Azaz csinálja ugyanazt mint a fenti metódus. (Ezt nem kell feltétlen megoldani, de meg tudjuk oldani, hogy halmaz + 1 + 2 is mûködjön?)
- Lehessen elkérni a halmaz méretét, azaz, hogy jelenleg hány elemet tartalmaz.
- Lehessen copy konstruktorral lemásolni egy halmazt.
- Legyen in metódusa, ami megnézi, hogy a kapott egész szám benne van-e a halmazban vagy sem. (true/false-t adjon vissza.)
- Nem kell figyelnünk arra, hogy biztosan belefér-e az összes elem a halmazba. (De ha van rá idõdök attól még megoldhatjátok, nem nehéz, ha kifutnánk az elemekbõl, akkor szimplán duplázzuk a tömb méretét és másoljuk át az eddigi elemeket.)
Példa main függvény tesztelésre:
int main(void) { Halmaz A = Halmaz(10); A.add(23); Halmaz B = A; Halmaz C = A + 12; Halmaz D = A - 23; Halmaz E = A + 12; cout << B.in(23) << endl; cout << C.in(12) << endl; cout << D.in(23) << endl; cout << E.hossz() << endl; return 0; }
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).
Tároláshoz dinamikusan foglalt tömböt javaslok. A konstruktorban hozzuk létre a megfelelõ méretû tömböt. Továbbá tároljuk a jelenleg tárolt elemek számát is. Ne felejtsük el megírni a destruktort is. Figyeljünk arra, hogy a copy konstruktorban új tömböt kell létrehoznunk, nem elég csak a másolandó halmaz pointerét lemásolni.
Arra kell igazán még vigyázni a metódusokban, hogy mindig jól állítsuk a jelenleg tárolt elemek adattagot. Pl ha hozzáadunk új elemet akkor növeljük, de ha az elem már benne volt a halmazban, akkor ne növeljük (hisz ekkor nem rakjuk bele a tároló tömbbe).