Informatika3-2024/Hazi5

A MathWikiből
(Változatok közti eltérés)
Kkovacs (vitalap | szerkesztései)
(Ú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…”)
Újabb szerkesztés →

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 (folytatás)

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).