Kihagyás

Extra feladatok

Órai gyakorló feladatok I.

  1. A múlt órán elkészült a Kurzus osztály. A hallgato-kurzus-1.cpp fájlban található az osztály megvalósítása, illetve van egy Hallgato osztály is.

    • Nézzük meg, hogy milyen paraméterátadások vannak (const string&)!
    • Nézzük meg, hogy a metódus milyen módosítót kapott (const)!
  2. Valósítsuk meg, hogy a kurzushoz hozzá lehessen adni hallgatót!

    • A hozzáadáshoz a + operátort használjuk!
    • Valósítsuk meg a += operátort is!
    • A hibakezeléssel most nem kell foglalkozni, azaz ha a kurzus tele van, akkor csak írjuk ki a képernyőre, hogy nem sikerült felvenni a halgatót, és ne csináljunk semmit sem!
  3. Valósítsuk meg a kurzusok "egyesítését"!

    • Lehessen összeadni két kurzust, ahol a második kurzus hallgatóit hozzáadjuk az elsőhöz (a + operator alkalmazásával)!
    • Valósítsuk meg Kurzusokra a += operátort is!
    • A hibakezeléssel itt sem kell foglalkozni, azaz ha a második kurzus hallgatói nem férnek fel az elsőre, akkor csak adjunk hibaüzenetet!
  4. Valósítsuk meg az index operátorát is a Kurzus osztálynak!

    • Lehessen módosítani az adott elemet!
    • const objektumra is működjön, és ilyenkor nem módosítható módon adja vissza az i-edik elemet!
    • Valódi hibakezeléssel nem kell foglalkozni, elég kiírni a képernyőre, hogy nincs olyan indexű elem, és a 0. indexűt kell visszaadni (a 0. indexű biztosan létezik, legfeljebb "üres")!

Megoldások: 2.-3. feladat, 4. feladat

Órai gyakorló feladatsor II.

  1. Legyen egy Dokumentum osztály:

    • cimmel (str)
    • tartalommal (str, default param: "")
    • szerzovel (str, default param: "anonym")
    • megnyitasokkal (unsigned, kezdő érték 0)
  2. Készítsünk hozzá gettert a tanult módon!

    • minden getter növelje a megnyitasokat eggyel! (Kivéve az azt lekérdező) (itt ugye muszáj, hogy mutable legyen)
  3. Valósítsuk meg a pre és post incremental operátort!
    • növelje a megnyitasok számát eggyel! (Mintha csak touch lenne vagy ilyesmi)
  4. Valósítsuk meg a += operátort, mely egy stringet fűz a tartalomhoz!
  5. Valósítsuk meg a + operátort, mely egy stringet fűz a tartalomhoz, de azt csak egy saved_as című dokumentumba teszi bele. (save as.. funkcionalitás)
  6. Legyen a Dokumentum konvertálható unsigned típusra, mely a tartalom hosszát adja eredményül!
    • a konverzió ne történjen meg implicit módon!
  7. Valósítsuk Dokumentum negálása (operator!) (unsigned visszatérési típussal)!
    • üres dokumentum esetén Lorem ipsum.. szöveget írja bele!
    • bármilyen tartalom esetében törölje azt!
    • visszatérési értékben az új tartalom hossza szerepeljen!

Megoldás

Otthoni gyakorló feladatok I.

  • Készíts egy Meme osztály! Két string típusú adattagja van, láthatóságuk legyen privát. Nevük: szoveg, kep. Legyen hozzá egy két paraméteres publikus konstruktor, amivel beállítjuk az adattagokat! Írj gettereket is!

    Részmegoldás
  • Készíts egy void print_meme() metódust, melynek paramétere egy ^^konstans^^ Meme referencia! Ez egy sorban kiírja a meme szövegét, majd egy rákövetkező sorban a képet is. Hogyan kell módosítani az előbb megírt gettereket?

    Részmegoldás
  • Készíts egy MemeGyujtemeny osztályt. Ez maximum tíz Meme-t tud letárolni egy tömbben! Mivel kell kiegészíteni a Meme osztályt, hogy működjön a tömb létrehozás?

    Részmegoldás
  • Definiáld felül a & és a &= operátorokat a MemeGyujtemeny osztályban úgy, hogy a baloldali operandus egy MemeGyujtemeny legyen, a jobboldali pedig egy Meme! A MemeGyujtemeny tömbjében az első üres helyre kerüljön be az új meme! Ennek megfelelően módosítsd úgy a MemeGyujtemeny osztályt, hogy le tudja tárolni, aktuálisan hány meme-t tárol!

    • MemeGyujtemeny & Meme művelet esetén ne legyen módosítva egyik operandus sem, a visszatérési érték pedig egy lemásolt, bővített MemeGyujtemeny objektum legyen!
    • MemeGyujtemeny &= Meme művelet esetén a bal oldali MemeGyujtemeny objektum módosuljon, ahhoz adjuk hozzá az új elemet! MemeGyujtemeny referencia legyen visszaadva!
    • Ha nincs már hely a gyűjteményben, ne legyen hozzáadás, csak történjen meg a megfelelő típusok visszadaása (módosítás nélküli másolat illetve módosítás nélküli bal oldali operandus)!
    Részmegoldás
  • Definiáld felül az indexer [] operátort a MemeGyujtemeny osztályban úgy, hogy adja vissza az i-edik letárolt memét! Legyen konstans és nem konstans verziója is! Túlindexelés esetén legyen kiírva a "Hiba" szöveg a cout-ra és a 0-ás indexű meme legyen visszaadva!

    • Hozz létre az osztályokon kívül egy void print_gyujtemeny függvényt, amely konstans MemeGyujtemeny paramétert vár és egy for ciklusban kiíratja a print_meme segítségével az összes letárolt memét! Gettert csak az aktuális meme szám lekérdezéséhez írj!
    Részmegoldás
Teljes megoldás

Otthoni gyakorló feladatsor II.

  1. Készíts egy Zene osztályt! Adattagjai: hossz (egész szám, másodpercben értve), nev. A nev default értéke legyen: "a-moll"! Legyen az osztálynak egy print() metódusa, amely kiíratja cout-ra az értékeit! Legyen egy két paraméteres konstruktora, amely beállítja a két adattagot és legyen egy egy paraméteres is, amiben csak a hosszt lehet állítani (a nev pedig a deafult értékét kapja)! Ne lehessen intet impliciten Zene osztályra konvertálni!

    Részmegoldás
  2. Legyen megvalósítva a Zene+int operátor, ami az előző Zene alapján készít egy új, megnövelt hosszúságú zenét. Az eredeti hosszhoz a paraméterben kapott értéket kell hozzáadni!

  3. Legyen megvalósítva az int+Zene operátor, ami ugyanazt csinálja, mint a Zene+int operátor!

    Részmegoldás
  4. Legyen megvalósítva a Zene+=int operátor, mely a paraméterben kapott értékkel növeli a zene hosszát! Az aktuális Zene objektum legyen módosítva, ennek megfelelően Zene referencia legyen a visszatérési érték!

    Részmegoldás
  5. Legyen megvalósítva a Zene osztályra prefix és a postfix ++ operátor is, amik növelik 1-gyel a zene hosszát!

    Részmegoldás
Teljes megoldás

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