Gyakorlattal kapcsolatos anyagok

Gyakorlat időpont
Kedd 12:00-16:00
Gyakorlat helyszín
É 2.63
Előadás időpont
Péntek 10:00-12:00
Előadás helyszín
É -1.75

FIGYELEM! Az oldalra feltöltött kódokat nem én írtam és nem is ellenőriztem őket. Az órán írt kódokat hallgatók küldték el nekem, amiket változatlan formában tettem közzé azoknak segítségül, akik esetleg lemaradtak.

1. Gyakorlat

Témakörök

  • Fordítás, futtatás parancssorból
  • Alapvető vezérlési szerkezetek: if, for, while

A kódok letölthetőek innen.

2. Gyakorlat

Témakörök

  • Függvények, rekurzió
  • Paraméterátadás módjai
  • Beépített típusok

3. Gyakorlat

Témakörök

  • std::vector
  • mátrixok ábrázolása std::vector-ral

4. Gyakorlat

Témakörök

  • std::string
  • Soronkénti beolvasás
  • Fájlból olvasás

5. Gyakorlat

Témakörök

  • String átkonvertálása numerikus típusokká
  • Parancssori argumentumok kezelése

6. Gyakorlat

Témakörök

  • std::set, std::map
  • Iterátorok
  • Adatok átmozgatása egyik konténerből egy másikba

7. Gyakorlat

Témakörök

  • struct-ok
  • fájlba írás, perzisztens adatok

8. Gyakorlat

Témakörök

  • Osztályok, metódusok, láthatóság
  • Konstruktorok, konstruktor mint implicit konverzió, explicit konstruktorok
  • Operátor túlterhelés

9. Gyakorlat (helyettesítve)

Témakörök

  • STL bevezető, konténerek
  • Iterátorok, algoritmusok
  • Funktorok bevezetés

10. Gyakorlat

Témakörök

  • Funktorok
  • Forward deklarációk
  • Template-ek bevezetés

11. Gyakorlat

Témakörök

  • Template specializáció, parciális template specializáció
  • Typedef
  • Osztály szintű változók, metódusok
  • Dependent scope

12. Gyakorlat

Témakörök

  • Memória modell, pointerek
  • RAII
  • Copy constructor, assignment operátor
  • Reguláris típusok

13. Gyakorlat

Témakörök

  • Minta ZH

A kódok letölthetőek innen.

Beadandó feladatok

A feladatokat [MatC++] kezdetű tárggyal az e-mail címemre várom.

1. Beadandó

Írjunk átlag számoló programot. A bemenet legyen a tárgyak kreditértéke és a szerzett érdemjegy. Tetszőleges számú számpárt tudjon megadni a felhasználó. A kimenet legyen a kredit index, korrigált kreditindex, kreditsúlyozott átlag és a hagyományos átlag. A nem teljesített tárgyakat 1 helyett 0 súllyal számoljuk.

2. Beadandó

Kérjünk be a felhasználótól két polinomot az együtthatóikkal megadva (a fokszámok előre elkérhetőek). Írjuk ki a két polinom szorzatából adódó polinom együtthatóit és fokszámát.

3. Beadandó

Fejezzük be az órán utolsóként elkezdett feladatot. Elsőre kérdezzük meg a felhasználót, hogy milyen fájlból akarja beolvastatni a verset. Amennyiben nem létezik ilyen fájl, a szabványos bemenetről (cin) olvassunk be.

4. Beadandó

Írjunk mátrix szorzó programot. A program tetszőleges számú mátrixokat tartalmazó szövegfájlt várjon parancssori paraméterként. Amennyiben mindegyik mátrix szabályos és kompatibilisek, a kimenet legyen a szorzás eredménye. Ellenkező esetben a program közölje, hogy melyik mátrix nem szabályos (pl.: nem minden sora ugyan olyan hosszú), illetve melyik mátrix nem kompatibilis az előtte lévők szorzatával. A mátrixokat tartalmazó szövegfájlok ne tartalmazzák külön adatként, hogy hány soros és oszlopos a mátrix, csak a mátrixot magát.

5. Beadandó

Írjunk egy quaternió osztályt! Az osztályt lehessen konstruálni két kompex számból (órán írt osztály) vagy négy valós számból. Valósítsuk meg az osztály példányain a megfelelő gettereket, settereket. Az ábrázolás legyen privát. Valósítsuk meg az összeadás, kivonás, szorzás, osztás, egész kitevőre emelés műveleteket. Írjunk egy programot, ami a Horner sémát alkalmazva quaternió együtthatókat és quaternió változót tartalmazó polinom helyettesítési értékét tudja kiszámolni. A quaternió polinom fokszámát ne kérjük be előre a felhasználótól. Amennyiben a felhasználó adott meg parancssori paramétert, azt tekintsük input fájlnak, ami az együtthatókat tartalmazza.

6. Beadandó

Írjunk egy olyan two_way_map template osztályt, ami mind a kulcsokról az értékekre mind pedig az értékekről a kulcsokra le tud képezni. Rendelkezzen [] operátorral, amivel a kulcshoz tartozó megfelelő értéket lehet lekérni. Emellett rendelkezzen egy getKey() metódussal, amivel az adott értékhez tartozó kulcsot lehet lekérdezni. Feltehetjük, hogy minden érték egyedi lesz. Emellett rendelkezzen findKey, countKey metódusokkal is, amik hasonlóan működnek mint a find és a count. Hasonlóan rendelkezzen lowerBoundKey, upperBoundKey és equalRangeKey metódusokkal. Vigyázat, amennyiben egy template változótól függő konténer iterátorának a típusát szeretnénk leírni, szükség lesz a typename kulcsszóra. Pl.: typename std::map::iterator. Ennek az okáról következő órán lesz szó.

7. Beadandó

Írjunk egy szavakat számoló programot! A fő funkcionalitást végző kód egy osztályon belül legyen megvalósítva! A program tudjon szabványos bemenetről is és fájlokból is olvasni. A fájlok nevét parancssori paraméterként várja. Tetszőlegesen sok fájlt lehessen megadni. Az eredmény legyen ugyan az, mintha a fájlok tartalma egymás után lenne írva egyetlen fájlban. A kimenet pedig legyen egy táblázat, amiben szerepel, hogy milyen hosszú szavakból hány szerepelt a bemenetben. Az -u parancssori kapcsolóval a duplán előforduló szavakat csak egyszer számolja (pl, ha 3-szor szerepel az alma szó, akkor is csak 1-szer növelje a 4 hosszú szavak számát). Az -o kapcsolóra a (hossz, szám) párokat szám szerinti csökkenő sorrendben írja ki. A kapcsolókat bármilyen sorrendben meg lehessen adni, akár két fájl között is.