Órai feladat
4. Gyakorlat¶
Az űrlények szeretnék tökélyre fejleszteni a csészealjak tehénrabló moduljait. Első lépésként növelik a szívóerőt és hatósugarat. Ennek nem várt mellékhatása, hogy a tehenekre vigyázó juhászkutyákat is felszippantják. Kutyákat azonban semmiképp sem szeretnének rabolni. Segíts nekik megoldani a bug-ot!
Nulladik feladat!
A feladatok megoldása előtt töltsük le a kiindulási kódunkat, ezt kiegészítve fogunk dolgozni!
Kiindulási kód
- Írjunk egy
Cseszealj
osztályt! Legyen ennek egy teheneket tárolóvector
adattagja, amely kezdetben üres! - Írjunk egy
elrabol()
függvényt aCseszealj
osztályba, ami egy tehenet vár paraméterül és ezt beleteszi a csészalj vektorába, ha a tömege nagyobb, mint 60! - Írjunk egy
elrabol()
függvényt aCseszealj
osztályba, ami egy juhászkutyát vár paraméterül és std::runtime_error kivételt dob, ezzel jelezvén, hogy kutyákat nem rabolunk! A hibaüzenet legyen a kutya neve! - Duplikáljuk meg az elrabol függvényeket a csészealj osztályban, de úgy, hogy átnevezed őket
operator<<
-ra:void operator<<(const Tehen& t)
void operator<<(const Juhaszkutya& t)
- Próbáljuk ki a
main
-ben a használatukat!
- Valósítsuk meg az elrablási logikát a
+=
operátorra is. Ezt is próbáljuk ki amain
-ben!- A
+=
és<<
operátorok esetén is próbáljuk meg összefűzni őket! - Pl.: csesze << tehen1 << tehen2;
- Mit tapasztalunk? Javítsuk ki a kódot, hogy működjön az összefűzés a << operátor esetén, de a +=-nél ne!
- A
- Szeretnénk, ha két csészealjról el tudnánk dönteni, hogy melyik a kisebb. Egy csészealj akkor kisebb a másiknál, ha a tárolt tehenek száma kevesebb.
- Valósítsuk meg két darab
kisebb()
nevű segédfüggvény segítségével! - Az egyik
kisebb()
segédfüggvény legyen aCseszealj
osztályon belül! - A másik
kisebb()
segédfüggvényt globálisan, aCseszealj
osztályon kívül valósítsuk meg! - Próbáljuk ki, hogy a két segédfüggvény közül az egyiket átnevezzük
operator<
-re! - Mi történik, ha egyszerre mindkettőt átnevezzük?
- Valósítsuk meg két darab
- Hozzunk létre a
main
-ben egy teheneket és egy csészealjat tárolóset
et, adjunk is hozzájuk elemeket!set<Tehen> tehenek;
set<Cseszealj> csaljak;
- Mit tapasztalunk?
- "Javítsuk ki" a
Tehen
osztályt, hogy letárolható legyenset
-ben! A teheneket először a nevük alapján hasonlítsuk össze, majd ha azok egyeznek, akkor a tömegük alapján!
- Próbáljuk ki, hogy milyen lesz az elemek sorrendje a csészealjak
set
ben, ha a<
operátorában megfordítjuk a relációs jelet! - Valósítsuk meg a
==
és!=
operátorokat két tehén között! Próbáljuk is ki őket! - Valósítsuk meg a
==
operátort egyunsigned
egész és egy tehén között (teljesül az egyenlőség, ha azunsigned
és a tehén tömege megegyezik)- Hány függvényre van szükség?
- A
Tehén
osztályon kívül vagy belül kell legyen(ek)?
- Legyen a tehén
unsigned
értékké konvertálható! Adjuk vissza a tehén tömegét!
Elakadtál, nem tudtad követni az órát?! Vagy csak átismételnéd? Egy lehetséges megoldását a feladatoknak megmutatjuk!
Órai feladat megoldása
Utolsó frissítés:
2024-10-14
Létrehozva: 2024-07-09
Létrehozva: 2024-07-09