Programozás 2. gyakorlat

Hasonló dokumentumok
3. Osztályok II. Programozás II

Programozási nyelvek II. JAVA

RESIDENT EVIL CODENAME: NIK

Programozás II gyakorlat. 8. Operátor túlterhelés

C++ programozási nyelv Konstruktorok-destruktorok

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás I ZH, Név:... A. csoport EHA: pont Gyakorlatvezető:...

OOP: Java 8.Gy: Abstract osztályok, interfészek

C++ programozási nyelv

Globális operátor overloading

500. AA Megoldó Alfréd AA 500.

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozási nyelvek Java

8. gyakorlat Pointerek, dinamikus memóriakezelés

Objektum elvu alkalmaza sok fejleszte se

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

OOP #14 (referencia-elv)

1. Alapok. Programozás II

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás II gyakorlat. 6. Polimorfizmus

Bevezetés a Python programozási nyelvbe

5. Gyakorlat. struct diak {

Osztályok. 4. gyakorlat

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Programozási Nyelvek: C++

Szoftvertechnolo gia gyakorlat

BME MOGI Gépészeti informatika 13.

Smart Pointer koncepciója

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Dokumentáció. 1. Beadandó feladat

OOP: Java 8.Gy: Gyakorlás

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Szövegek C++ -ban, a string osztály

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

500. CC Megoldó Alfréd CC 500.

Pénzügyi algoritmusok

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

OOP. Alapelvek Elek Tibor

7. fejezet: Mutatók és tömbök

Programozas 1. Strukturak, mutatok

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

Programozási nyelvek Java

4. Gy: JAVA osztályok

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Programozás II. 4. Dr. Iványi Péter

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

BME MOGI Gépészeti informatika 8.

JAVA PROGRAMOZÁS 2.ELŐADÁS

Java II. I A Java programozási nyelv alapelemei

feladat pont min elért

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

BME MOGI Gépészeti informatika 7.

Pénzügyi algoritmusok

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Gyakorlati vizsgatevékenység A

INFORMATIKA javítókulcs 2016

Felhasználó által definiált adattípus

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Rendszerterv. Makoviczki András. Neptun: JJ26AR

Java és web programozás

Programozás alapjai II. (4. ea) C++

Programozás C++ -ban 2007/7

INFORMATIKAI ALAPISMERETEK

Programozás I gyakorlat

128. AA Megoldó Alfréd AA 128.

Objektumorientált programozás C# nyelven

Programozás C++ -ban

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

ELTE SAP Excellence Center Oktatóanyag 1

Programozási nyelvek Java

Programozás I gyakorlat

C programozási nyelv Pointerek, tömbök, pointer aritmetika

AWK programozás, minták, vezérlési szerkezetek

Programozás alapjai. 10. előadás

A következő táblázat tartalmazza az egyes fajták jellemzőit.

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

HTML ÉS PHP ŐSZI FÉLÉV

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Bevezetés a programozásba I.

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Készítette: Nagy Tibor István

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Programozási alapismeretek 4.

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Átírás:

Programozás 2. gyakorlat Kötelező programok listája Tartalom Első projektmunka feladatok (Határidő: október 15. 08:00)... 2 1. Intervallum... 2 2. Igazolvány... 3 3. Telefon... 4 4. Tanulmányi rendszer... 5 5. Játékok... 6 6. Hibrid autók... 7 7. Boltok... 8 Második projektmunka feladatok (Határidő: november 19. 08:00)... 9 1. Intervallum... 9 2. Igazolványtartó tok...10 3. Telefon katalógus...11 4. Tanulmányi rendszer...12 5. Játékok...13 6. Hibrid Autók...14 7. Boltok...15

Első projektmunka feladatok (Határidő: október 15. 08:00) 1. Intervallum Hozz létre egy Interval osztályt, ami egy zárt intervallumot reprezentál kezdő és végponttal (double). Legyen: Egy olyan konstruktora, ami a paraméterként várja a két végpontot Egy olyan konstruktora, ami a konzolról olvassa be a két végpontot Egy olyan konstruktora, ami egy paraméterben kapott fájlból olvassa be a két végpontot (a fájl szöveges legyen, a két végpont szóközzel legyen elválasztva) Egy save függvénye, ami a paraméterül kapott fájlba elmenti a végpontokat Egy print függvénye, ami [ kezdőpont, végpont ] formában kiírja a konzolra az Intervallumot Egy positive függvénye, ami visszaadja, hogy az intervallumban csak pozitív számok tartoznak bele Egy length függvénye, ami visszatér az Intervallum hosszával. Származtass le az Interval osztályból egy ColorInterval osztályt, aminek színe is van (char*). Legyen: Konstruktora, ami paraméterül várja a két végpontot és a színt Legyen egy changecolor függvénye, ami megváltoztatja az intervallum színét az alábbi 6 szín közül valamelyikre véletlenszerűen: piros, kék, zöld, sárga, fehér, rózsaszín. Ha a kiválasztott szín ugyanaz, mint az intervallum aktuális színe, akkor az intervallum színe legyen fekete. Legyen egy isspecialinterval() függvénye, ami igazzal térjen vissza, ha az intervallum fekete színű, csak nemnegatív számokat tartalmaz, és a hossza legfeljebb 10. Felüldefiniált print függvénye, ami [ kezdőpont, végpont ] (szín) - speciális_e formában kiírja a konzolra az Intervallumot Készíts egy main függvényt, ami az elkészült osztályokat (függvényeivel együtt) teszteli!

2. Igazolvány Hozz létre egy Igazolvány osztályt, ami egy személyes okmányt valósít meg. Minden igazolvány valaki nevére szól (char* vagy string), illetve mindegyiknek van egy kiállítási dátuma (pl.: ÉÉÉÉHHNN formátumban, szövegként tárolva). Legyen az osztálynak: Egy olyan konstruktora, ami a paraméterként várja a nevet és a kiállítási dátumot Egy olyan konstruktora, ami csak a nevet várja paraméterül, a kiállítási dátumot tetszőleges értékre állítja be. Egy olyan konstruktora, ami a konzolról olvassa be a fenti adatokat. Egy leolvas() függvénye, ami kiírja az alapértelmezett kimenetre a tulajdonos nevét, valamint az igazolvány kiállítási dátumát. (Pl.: Ez az igazolvány <Név> tulajdona, és <ÉÉÉÉ>.<HH>.<NN>. dátummal állították ki.) Egy azonosít függvénye, ami paraméterben egy stringet vár, és ellenőrzi, hogy az igazolvány tulajdonosa a paraméterben megadott nevű ember-e. Ennek megfelelően logikai értékkel térjen vissza a függvény. Egy save függvénye, ami a paraméterül kapott fájlba elmenti az adatokat. Származtass le az Igazolvány osztályból egy SzemélyiIgazolvány osztályt, amiben tároljuk még a személyi igazolvány számát (pontosan 8 karakterből álló tömb), valamint azt, hogy új fajta igazolványról van-e szó. Az osztálynak legyen Konstruktora, ami paraméterül várja a nevet, kiállítási dátumot, igazolványszámot (abban az esetben, ha ez nem egy 8 karakterből álló tömb, az alapértelmezett hibakimeneten jelezzük, és állítsunk be egy tetszőleges értéket (ezt érdemes lehet pl. #define makróval definiálni). Felüldefiniált leolvas() függvénye, ami kiírja az alapértelmezett kimenetre a tulajdonos nevét, valamint az igazolvány kiállítási dátumát és számát. (Pl.: Ez az igazolvány <Név> tulajdona, és <ÉÉÉÉ>.<HH>.<NN>. dátummal állították ki, száma: <XXXXXXXX>) Készíts egy main függvényt, ami az elkészült osztályokat (függvényeivel együtt) teszteli!

3. Telefon Hozz létre egy Telefon osztályt, ami egy telefont reprezentál. A telefonnak legyen száma (9 jegyű szám, vagy 9 karakteres tömb), valamint felhasználható internet mennyiségét (double, megabájtban számolva). Az osztálynak legyen: Egy olyan konstruktora, ami a paraméterként várja a számot, és a felhasználható internet mennyiségét Egy olyan konstruktora, ami a konzolról olvassa be az adatokat. Egy internethasznál() függvénye, amely a paraméterben megadott számmal csökkenti a felhasználható internet mennyiségét. Amennyiben paraméter nélkül hívjuk meg a függvényt, pontosan 1.2 megabájttal csökkenjen a felhasználható keret. Egy feltölt() függvény, amely pontosan 500 megabájtot ad hozzá a felhasználható internethez, de ügyelj rá, hogy a felhasználható keret legfeljebb 1500 megabájt legyen. Ezen érték felé ne emelkedhessen a szám! Egy adatok() függvény, ami kiírja az alapértelmezett kimenetre a számot és a felhasználható internet mennyiségét. Származtass le az Telefon osztályból egy SzuperNetezőTelefon osztályt, ami tárolja magáról, hogy használhat-e 4G-t vagy sem (bool). Az osztálynak legyen: Egy olyan konstruktora, ami a paraméterként várja a számot, a felhasználható internet mennyiségét, és azt, hogy használhat-e 4G-t. Egy save függvénye, ami a paraméterül kapott fájlba elmenti az adatokat. Felüldefiniált internethasznál() függvénye, amely a paraméterben megadott számmal csökkenti a felhasználható internet mennyiségét. Amennyiben paraméter nélkül hívjuk meg a függvényt, pontosan 23.5 megabájttal csökkenjen a felhasználható keret. Felüldefiniált feltölt() függvénye, amely pontosan 500 megabájtot ad hozzá a felhasználható internethez, korlátozás nélkül. Készíts egy main függvényt, ami az elkészült osztályokat (függvényeivel együtt) teszteli!

4. Tanulmányi rendszer Hozz létre egy TanulmanyiRendszer osztályt, amely egy tanulmányi rendszert reprezentál. Ügyelj rá, hogy az osztályból ne lehessen objektumot létrehozni. Az osztálynak legyen: Egy url adattagja, amely a tanulmányi rendszer url-jét tartalmazza (char* vagy string), és amelyet csak az osztályból, illetve annak gyerekosztályaiból lehet elérni. Egy paraméteres konstruktora, amely az url-t várja paraméterül Egy bejelentkezes() metódusa, amely logikai értéket ad vissza, hogy sikeres volt-e a művelet. Ne várjon paramétereket. Ehhez a metódushoz ne tartozzon implementáció, a gyerekosztályokban kelljen megvalósítani. Egy kurzusfelvetel() metódusa, amely logikai értéket ad vissza, és egy paramétert vár, a felvenni kívánt kurzus kódját (char* vagy string). Ehhez a metódushoz se tartozzon implementáció, a gyerekosztályokban kelljen megvalósítani. Származtass le a TanulmanyiRendszer osztályból egy ETR nevű osztályt. Legyen neki egy paraméteres konstruktora, ami az url-t várja, és inicializálja az ősosztály megfelelő adattagját. Definiáld felül a bejelentkezes() metódust. Írja ki a képernyőre, hogy sikeres bejelentkezés, és térjen vissza igazzal. Definiáld felül a kurzusfelvetel() metódusát: írja ki, hogy Az ETR tanulmányi rendszer 2017.04.06-án 16:00-kor leállt.. Származtass le a TanulmanyiRendszer osztályból egy Neptun nevű osztályt. Legyen neki egy adattagja, ami a felület színét (témát) várja (char* vagy string). Legyen neki egy paraméteres konstruktora, ami az url-t és a témát várja, és beállítja őket a megfelelő adattagoknak. Definiáld felül a bejelentkezes() metódust, ami 90% eséllyel sikeres. Ha sikeres, írja ki a képernyőre, hogy Sikeres bejelentkezés, majd térjen vissza igazzal. Egyéb esetben írja ki, hogy The service is unavailable. és hamissal térjen vissza. Definiáld felül a kurzusfelvetel() metódusát, ami 20% eséllyel sikertelen. Ezesetben írja ki, hogy Hiba! A kurzusfelvétel nem sikerült, mert nem sikerült a tárgyfelvétel. Egyébként nézze meg, hogy a paraméterül kapott kurzuskód benne van-e a kurzusok.txt fájlban (minden sorban egy kurzuskód szerepel). Ha nincs, akkor írja bele, és térjen vissza igazzal. Ha benne van, akkor szintén írja ki a képernyőre a fenti hibaüzenetet, és hamissal térjen vissza. Készíts egy tematvalt() metódust, ami a kapott paraméter (char* vagy string) értékét beállítja a téma adattagnak, majd kiírja, hogy Az új téma: <szín> (a szín helyére a kapott paraméter kerül). Készíts egy main() függvényt, amely az elkészült tanulmányi rendszerek funkcióit próbálja ki.

5. Játékok Készíts egy Jatek nevű osztályt, amely egy számítógépes játékot reprezentál. Tárold el a játék nevét (char* vagy string), árát (valós szám, euróban), átlagos értékelését (valós szám), illetve a játékosok számát (egész szám). Ezeket az adattagokat csak az osztály, illetve annak gyerekosztályai láthassák. Az osztálynak legyen: Egy paraméteres konstruktora, amely a 4 adattag értékét várja paraméterül, és beállítja nekik a megfelelő értékeket. Egy paraméteres konstruktora, amely a játék nevét és árát várja paraméterül, a játékosok számát 0-ra, az értékelést 1-re állítja. Egy learaz() metódusa, ami paraméterben egy 5 és 95 közötti egész számot vár, és a játékot ennyi százalékkal leárazza. Egy vasarol() metódusa, ami növeli a játékosok számát eggyel. Egy ertekel() metódusa, ami egy logikai értéket vár paraméterként. Ha igazat kapott, akkor növelje meg a játék értékelését a jelenlegi értékelés reciprokával (tehát ha 3 az értékelés, akkor legyen 3 + ⅓ = 3,33...), ha pedig hamisat, akkor csökkentse ugyanennyivel. Ügyelj rá, hogy az értékelés ne csökkenhessen 1 alá. Egy ajanlott() metódusa, ami igazzal tér vissza, ha az értékelés és a játékosok számának gyökének hányadosa nagyobb, mint 1,25, egyébként hamissal. igazzal térjen vissza: Származtass le a Jatek osztályból egy RageGame nevű osztályt. Ennek legyen egy új adattagja, ami az idegességi tényezőt tárolja (pozitív valós szám). Az osztálynak legyen: Egy olyan konstruktora, ami az ősosztály adattagjai mellé várja az idegességi tényező értékét is Egy biztonsagos() metódusa, amelynek két paramétere van: a játékos nyugalmi állapotának mértéke (pozitív egész szám), illetve a játékkal eltöltött idő percben (pozitív egész szám). A metódus igaz értékkel térjen vissza, ha: Definiáld felül az ajanlott medósust úgy, hogy ha az ősosztály igazzal tér vissza, akkor is 50% eséllyel hamist adjon vissza. Készíts egy main() függvényt, amely az elkészült osztályok funkcióit kipróbálja.

6. Hibrid autók Készíts egy BenzinesAuto nevű osztályt. Tárold el az autó típusát (char* vagy string), az üzemanyag tank űrtartalmát (egész szám) és a 100 kilométerenkénti fogyasztást (literben, valós szám). Ennek az osztálynak legyen: Konstruktora, ami paraméterben várja a három tulajdonságot és beállítja őket. Konstruktora, ami nem vár paramétert és standard inputról olvassa be a három tulajdonságot. Konstruktora, ami paraméterben egy fájl nevét várja, és onnan olvassa be a tulajdonságokat. Legyen hatotav() nevű metódusa, ami visszaadja, hogy teli tankkal és átlagos fogyasztással számolva, hány km-t tud megtenni az autó Legyen egy kiir() metódusa, ami kiírja az autó nevét és a hatótávját a standard kimenetre. Legyen egy ment() metódusa, ami a paraméterben kapott fájlba kiírja az autó három tulajdonságát (típus, tank mérete és fogyasztás) Származtass a BenzinesAuto osztályból egy HibridAuto nevű osztályt. Ez az örökölt adattagokon kívül rendelkezzen még egy elektromoshatotav nevű adattaggal, ami km-ben tárolja, hogy tisztán elektromosan hány km-t tudna megtenni, illetve egy logikai típusú adattaggal, ami jelzi, hogy önvezető-e? Legyen egy olyan konstruktora, ami az örökölt adattagok mellett várja még az elektromos hatótáv értékét és azt, hogy önvezető-e? Definiáld felül a hatotav() metódust úgy, hogy a benzines hatótávhoz hozzáadod az elektromosan elérhető hatótáv mértékét. Írj egy main() függvényt, amiben néhány példával teszteled a programod működését!

7. Boltok Készíts egy Bolt osztályt! Adattagként tárold el a bolt nevét, valamint a nyitás és zárás időpontját (csak az órát tárold el, egész számként). Az osztálynak legyen: Konstruktora, ami paraméterben várja a bolt nevét, és a nyitási-zárási időpontokat. Egy konstruktora, ami egy fájlnevet vár és onnan olvassa be a bolt nevét és az időpontokat! Legyen egy statikus vasarlokszama nevű adattagja, ami boltba betérő vásárlókat fogja számolni. Legyen egy napizaras() metódusa, amely paraméterben egy fájlnevet vár, és kiírja oda a bolt nevét, valamint azt, hogy hányan voltak eddig a boltban. Legyen egy nyitvae() metódusa, ami paraméterként egy órát és egy percet vár, és eldönti, hogy az adott időpontban nyitva van-e az adott üzlet? (Ha a bolt 18:00-kor zár, akkor 17:59-kor még nyitva van, de 18:00-kor már nem.) Ha nem adunk meg ennek a metódusnak perc paramétert, akkor az automatikusan 00 értéket jelent. Származtass le egy EjjelNappali nevű osztályt a Bolt osztályból. Legyen egy paraméteres konstruktora, ami csak a bolt nevét várja, a nyitás és zárás idejét pedig beállítja 0:00-ra és 24:00-ra. Definiáld felül a nyitvae() metódust, hogy mindig igaz értékkel térjen vissza! Definiáld felül a napizaras() metódust úgy, hogy kiíráskor a bolt neve mellé odaírja, hogy Nonstop. Írj egy main() függvényt, amiben néhány példával teszteled a programod működését!

Második projektmunka feladatok (Határidő: november 19. 08:00) 1. Intervallum Hozz létre egy IntervalSet nevű osztályt, ami Interval objektumok tárolására alkalmas (mivel a ColorInterval az Interval-ból származik, ezért azokat is legyen képes tárolni). Legyen egy konstruktora, amely paraméterül vár egy számot. Ennyi Interval objektumra mutató pointernek foglajon dinamikusan helyet. Definiáld felül a += operátort, amely egy paraméterül kapott Interval vagy ColorInterval objektumot (amelyet pointerként kap meg) teszi hozzá a tároltakhoz, ha még van hely - ha nincs, akkor jelezzen hibát. A += operátor működjön úgy, hogy a paraméterül kapott objektumról készítsen másolatot, és azt vegye hozzá a halmazhoz (legyen egy copy nevű virtuális függvénye az Interval és ColorInterval osztályoknak, ami másolatot készít róluk). Készíts destruktort, amely felszabadítja a tárolt objektumokat, és a tárulásokra használt pointer tömböt. Definiáld felül a suffix -- operátort, ami csinálja azt, hogy a legutoljára hozzávett elemet kiveszi a halmazból - megfelelő memóriakezeléssel. Definiáld felül az ostream << operátorát, hogy azzal ki tudd íratni a tárolt intervallumokat. (Ehhez használd az Interval és ColorInterval print függvényét, és hogy jól működjön, tedd azokat virtuális függvénnyé.) Készíts copy konstruktort az osztályhoz Készíts egy main függvényt, amely: Létrehoz egy IntervalSet objektumot, amiben helyet foglaltat 10 intervallumnak. Adj hozzá += operátorral 3 Interval és 3 ColorInterval objektumot. Írasd ki << operátorral ( cout << ). Szabadítsd föl minden lefoglalt memóriaterületet.

2. Igazolványtartó tok Hozz létre egy IgazolványtartóTok osztályt, ami Igazolvány objektumokat tud tárolni. Ezek lehetnek SzemélyiIgazolvány vagy sima Igazolvány objektumok. Legyen egy konstruktora, amely paraméterül vár egy számot, ennyi lapos lesz a tok. A szám*2 Igazolvány objektumra mutató pointernek foglajon dinamikusan helyet (hiszen egy lap mindkét oldalára tehetünk igazolványt). Definiáld felül a += operátort, amely paraméterül egy Igazolvány referenciát kap. A kapott igazolvány másolatát tárolja el a tömbben. Ha elfogyott a hely a tömbben, ne csináljon semmit. Definiáld felül a függvényoperátort, amely paraméterben két számot vár, az első szám mondja meg, hogy melyik lapban lévő igazolvány érdekel, a második szám (ez csak 1 vagy 2 lehet, erre ügyelj!) pedig azt mondja meg, hogy a lap felső vagy oldalán lévő igazolványt szeretnénk megnézni. (Pl.: ha a 4, 2 paraméterekkel hívjuk meg a függvényt, az azt jelenti, hogy a 4. oldalon a hátulsó igazolványra vagyunk kíváncsiak, ami a 8. igazolvány lesz a tömbben (1. oldalon van az 1-2 igazolvány., 2. oldalon a 3-4. igazolvány, stb.) Ennek az igazolványnak hívjuk meg a leolvas() függvényét. Amennyiben nem létezik az adott helyen igazolvány, írja ki a függvény, az adott helyen nincs igazolvány. Készíts egy valid() függvényt, amely az alábbiak szerint működjön: minden egy tömbelem tulajdonosát kérdezze le, és ha a nevek az összes létező igazolvány esetében megegyeznek, akkor térjen vissza igazzal, különben hamissal. Definiáld felül az ostream << operátorát, aminek segítségével írasd ki azt, hogy hány igazolvány fér el a tömbben, valamint azt, hogy jelenleg hány darab van benne. Készíts egy main függvényt, amely: Létrehoz egy IgazolványtartóTok objektumot, amiben helyet foglaltat 10 igazolványnak. Adj hozzá legalább 4 tetszőleges igazolvány objektumot Használd a függvényoperátort. Hívd meg a valid függvényt, írasd ki az eredményét. Írasd ki << operátorral ( cout << ). Szabadítsd föl minden lefoglalt memóriaterületet.

3. Telefon katalógus Hozz létre egy TelefonKatalógus nevű osztályt, ami Telefon objektumokat tud tárolni. Legyen egy konstruktora, amely paraméterül vár egy számot. Ennyi Telefon objektumra mutató pointernek foglajon dinamikusan helyet. Készíts egy add metódust (ami logikai értékkel tér vissza), amely a telefon katalógushoz hozzáadja a paraméterből érkező telefon objektumot (A telefon objektumról másolatot készítsünk, copy konstruktorral), egészen addig, amíg van van hely. Ha nincs már hely, ne csináljon semmit, csak térjen vissza false értékkel. Definiáld felül a prefix ++ operátort, amely az összes telefon felhasználható internet mennyiségét megnöveli 100 megabájttal. Definiáld felül a tömbindex operátort, amely térjen vissza a tárolt telefonok közül a paraméterben megadott indexűvel, amennyiben az létezik. Amennyiben nem, térjen vissza az utolsó tárolt indexen lévő telefonnal Definiáld felül az ostream << operátorát, aminek segítségével írasd ki az összes tárolt telefon darabszámát, és a telefonokra egyesével hívja meg az adatok() függvényt. Készíts destruktort, amely felszabadítja a tárolt objektumokat, és a tárulásokra használt pointer tömböt. Készíts egy main függvényt, amely: Létrehoz egy TelefonKatalógus objektumot, amiben helyet foglaltat 100 telefonnak Adj hozzá 2 Telefon és 3 SzuperNetezőTelefon objektumot. Írasd ki << operátorral ( cout << ). Hívd meg a ++ operátort. Szabadítsd föl minden lefoglalt memóriaterületet.

4. Tanulmányi rendszer Egészítsd ki a meglévő programot. Hozz létre egy ETRArmy nevű osztályt, ami ETR objektumok tárolására alkalmas. Legyen egy konstruktora, amely paraméterül vár egy pozitív egész számot, ennyi ETR objektumra mutató pointernek foglaljon helyet dinamikusan. Készíts destruktort, amely felszabadítja a tárolt objektumokat, és a tárolásukra használt tömböt. Hozz létre egy init() függvényt, ami egy string tömböt vár, amelyek a létrehozandó ETR objektumok url-jét tartalmazzák. Ezek alapján inicializáld a tömböt (feltehetjük, hogy a paraméterként kapott tömb mérete pontosan akkora, mint ahány ETR elfér a saját tömbünkben)! Ügyelj rá, hogy ez a függvény csak első alkalommal működjön így. Ha már másodjára hívjuk meg, írja ki a képernyőre az alábbi szöveget: Új ETR nem csatlakozhat a sereghez, és a meglévők is hamarosan Neptunná válnak!. Definiáld felül a függvény operátort, amely egy számot kap paraméterül, és törli a tömbből az azon a pozíción lévő ETR objektumot, továbbá kiírja a képernyőre, hogy Egy ETR rendszert sikeresen eltávolítottunk, de aggodalomra semmi ok, hamarosan Neptunként visszatér közénk! Definiáld felül a tömbindex operátort, amely visszaadja a tömbnek a megfelelő indexű elemét, ha még ott ETR van. Ha már töröltük, akkor NULL-t adjon vissza, de írja ki a képernyőre, hogy Itt már nincs ETR, kérlek nézz vissza később Neptunért, az egységes tanulmányi rendszerért! Készíts egy main függvényt, amely: Létrehoz egy ETRArmy példányt, ami 3 db ETR objektumot tárol. Hozz létre egy 3 méretű sztringtömböt, és tegyél bele 3 url-t. Add hozzá ezt a 3 ETR-t az init() függvény segítségével. Töröld egymás után mind a három ETR-t, majd ellenőrizd is, hogy tényleg törlődtek-e. Szabadítsd fel a lefoglalt memóriaterületet

5. Játékok Egészítsd ki a meglévő programot az alábbiak szerint: hozz létre egy Jatekos nevű osztály, ami Jatek objektumok tárolására alkalmas. Egy Játékosnak van továbbá egy nyugalmi állapotát tároló adattagja (pozitív egész szám) Legyen egy konstruktora, amely paraméterül vár egy pozitív egész számot, ennyi Jatek objektumra mutató pointernek foglaljon helyet dinamikusan. Ezen kívül második paraméterként várja a nyugalmi állapotának értékét, amivel a megfelelő adattagot inicializálja. Készíts destruktort, amely felszabadítja a tárolt objektumokat, és a tárolásukra használt tömböt. Definiáld felül a += operátort, aminek a jobb oldali operandusa egy játékra mutató referencia. Ezt a játékot vegye fel a játékos játékai közé, ha van még hely, egyébként írjon figyelmeztetést a standard hibacsatornára. Legyen egy jatszik() metódusa, ami két számot vár, és nincs visszatérési értéke. Az első szám a játék indexe a tömbben, amivel játszik, a második paraméter pedig a játékkal töltött idő. Ha az adott játék RageGame típusú, akkor hívd meg a biztonsagos() metódusát, és ha az hamisat ad vissza, akkor írd ki a képernyőre, hogy: Egészségügyi szempontokat figyelembe véve ezzel a játékkal jelenleg nem érdemes játszani. Definiáld felül a postfix ++ operátort, ami a játékos nyugalmi állapotát megnöveli 1-gyel Definiáld felül a postfix -- operátort, ami a játékos nyugalmi állapotát csökkenti 1-gyel Készíts egy main függvényt, amely: Létrehoz egy Jatekos objektumot, ami 3 játékot tárol Hozz létre 3 Jatek objektumot, melyek közül legalább egy legyen RageGame Vedd fel a létrehozott játékokat a játékos játékai közé Hívd meg a jatszik metódust mindegyik játékra Szabadítsd fel a lefoglalt memóriaterületet

6. Hibrid Autók Bővítsd ki az előző programodat egy AutoKolcsonzo nevű osztállyal, ami különböző típusú autókat tárol és egy kölcsönzőt reprezentál. Ez az osztály rendelkezzen az alábbi adattagokkal és metódusokkal: Legyen egy konstruktora, ami paraméterben egy egész számot vár, a kölcsönző kapacitását (azaz, hány autó számára van helyük). Foglalj le dinamikus memóriafoglalással egy tömböt az autók számára (egy tömbben tárold a benzines és hibrid autókat is). Definiáld felül a += operátort, aminek a jobb oldali operandusa egy autóra (benzines, vagy hibrid) mutató referencia. Ez az operátor felveszi a megadott autót a a kölcsönző kínálatába, ha van még szabad hely, egyébként nem csinál semmit. (Az eredeti autót teszi be, nem egy másolatot.) Definiáld felül a tömbindex operátort, ami az autókölcsönzést valósítja meg. Ha van olyan indexű autó, akkor visszaadja azt az autót, kiveszi a tömbből, és kiírja a képernyőre, hogy Jó utat a következő x km-en! (ahol x a kikölcsönzött autó hatótávja). Ha nincs, akkor adjon vissza NULL-t, és írja ki, hogy Nincs bent ilyen számú autó. Definiáld felül a << operátort, ami kiírja a kölcsönzőben bentlévő autók típusát és hatótávját, amihez a korábban megírt hatotav() metódust használod. Készíts copy konstruktort és destruktort az AutoKolcsonzo osztályodhoz. Írj egy main függvényt. Ebben Hozz létre egy kölcsönzőt 5 autó kapacitással. Hozz létre 3 autót (vegyesen benzinest és hibridet). Vedd fel ezeket az autókat a kölcsönződbe. Kölcsönözz ki egy autót, majd próbálj kikölcsönözni egy nem létező indexű autót is. << operátor felhasználásával írasd ki a kölcsönzőben található autókat. Figyelj oda a dinamikus memóriafoglalással kapcsolatos teendőkre! Gondoskodj róla, hogy a HibridAuto esetén a helyes hatotav() metódus hívódjon meg.

7. Boltok Bővítsd ki az előző feladatodat egy Plaza osztállyal, ami egy plázát fog jelképezni és tárolja a benne található üzleteket. Ennek az osztálynak az alábbi adattagjai és metódusai legyenek: Legyen egy konstruktora, ami paraméterben az üres üzlethelységek számát várja, és létrehoz egy Bolt objektumokat tároló tömböt dinamikusan. (Egy tömbben tárold a hagyományos és az éjjel-nappal nyitvatartó boltokat.) Definiáld felül az osztály *= operátorát, aminek a jobboldali operandusa egy bolt referencia, és beteszi a megadott boltot az első üres helyre, ha van. Ha nincs, akkor kiírja, hogy Sajnáljuk, megteltünk. és nem csinál semmit. Definiáld felül a Bolt osztály ++ operátorát, ami növeli eggyel az aznapi látogatók számát. Definiáld felül a függvényhívás operátort a Plaza osztályban, ami paraméterben egy órát és egy percet vár. A plázában található boltok nyitvatartása alapján megállapítja, hogy a pláza nyitva van-e még. Egészen addig nyitva van, amíg van benne legalább egy nyitvatartó üzlet. Ehhez használd fel a korábban megírt nyitvae() metódust. Ha a pláza zárva (tehát minden bolt bezárt a megadott időpontig), akkor írd ki, hogy Zárva vagyunk. és a térj vissza hamis logikai értékkel. Egyébként írd ki a még nyitvatartó üzletek nevét és növeld meg a vásárlók számát eggyel (az előbb megírt ++ operátort használva) és térj vissza igaz értékkel. Írj egy main függvényt, amiben: Létrehozol egy Plaza objektumot és pont annyi üzletet, amennyi belefér. Ezeket tedd bele a plázába. Próbáld ki tetszőleges időpontokra, hogy a pláza zárva vagy nyitva van-e? Teszteld a programodat úgy, hogy csak hagyományos boltok vannak, és úgy is, hogy van legalább egy éjjel-nappali. Figyelj oda a dinamikus memóriafoglalással kapcsolatos teendőkre! Gondoskodj róla, hogy az EjjelNappali bolt esetén a helyes nyitvae() metódus hívódjon meg.