Informatika3-2024/Hazi5
11. sor: | 11. sor: | ||
* Létrehozáskor kelljen megadni a halmaz maximális méretét. Azaz, hogy maximum hány elem fér bele. | * 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. | * 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. | ||
− | |||
* Lehessen elkérni a halmaz méretét, azaz, hogy jelenleg hány elemet tartalmaz. | * Lehessen elkérni a halmaz méretét, azaz, hogy jelenleg hány elemet tartalmaz. | ||
* Lehessen copy konstruktorral lemásolni egy halmazt. | * Lehessen copy konstruktorral lemásolni egy halmazt. | ||
23. sor: | 22. sor: | ||
A.add(23); | A.add(23); | ||
Halmaz B = A; | Halmaz B = A; | ||
− | Halmaz C = A | + | Halmaz C = A; |
− | Halmaz D = A | + | C.add(12); |
− | + | Halmaz D = A; | |
+ | cout << D.add(23) << endl; | ||
+ | cout << A.hossz() << endl; | ||
cout << B.in(23) << endl; | cout << B.in(23) << endl; | ||
cout << C.in(12) << endl; | cout << C.in(12) << endl; | ||
− | cout << D | + | cout << D.hossz() << endl; |
− | + | ||
return 0; | return 0; | ||
} | } |
A lap jelenlegi, 2024. május 3., 03:17-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.
- 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; C.add(12); Halmaz D = A; cout << D.add(23) << endl; cout << A.hossz() << endl; cout << B.in(23) << endl; cout << C.in(12) << endl; cout << D.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).