Kihagyás

Ó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!

motto


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

kiindulo.cpp


  1. Írjunk egy Cseszealj osztályt! Legyen ennek egy teheneket tároló vector adattagja, amely kezdetben üres!
  2. Írjunk egy elrabol() függvényt a Cseszealj 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!
  3. Írjunk egy elrabol() függvényt a Cseszealj 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!
  4. 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!
  5. Valósítsuk meg az elrablási logikát a += operátorra is. Ezt is próbáljuk ki a main-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!
  6. 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 a Cseszealj osztályon belül!
    • A másik kisebb() segédfüggvényt globálisan, a Cseszealj 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?
  7. Hozzunk létre a main-ben egy teheneket és egy csészealjat tároló setet, adjunk is hozzájuk elemeket!
    • set<Tehen> tehenek;
    • set<Cseszealj> csaljak;
    • Mit tapasztalunk?
    • "Javítsuk ki" a Tehen osztályt, hogy letárolható legyen set-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!
  8. Próbáljuk ki, hogy milyen lesz az elemek sorrendje a csészealjak setben, ha a < operátorában megfordítjuk a relációs jelet!
  9. Valósítsuk meg a == és != operátorokat két tehén között! Próbáljuk is ki őket!
  10. Valósítsuk meg a == operátort egy unsigned egész és egy tehén között (teljesül az egyenlőség, ha az unsigned é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)?
  11. 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

megoldas.cpp



Utolsó frissítés: 2024-10-14
Létrehozva: 2024-07-09