feladat pont min elért

Hasonló dokumentumok
feladat pont min elért

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

500. AA Megoldó Alfréd AA 500.

500. CC Megoldó Alfréd CC 500.

128. AA Megoldó Alfréd AA 128.

1.AA MEGOLDÓ BERCI AA 1.

503.AA Megoldo Arisztid 503.A

1000.AA Megoldo Alfréd 1000.A

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

500.AA Megoldo Arisztid 500.A

.AA Megoldó Alfréd AA.

0. Megoldó Manó 0. Programozás alapjai 2. (inf.) pót zárthelyi gyak. hiányzás: 2 n/kzhp: n/11,5. ABCDEF IB.028/2.

500.AA Megoldó Kulcsár 500.A

C++ Standard Template Library (STL)

Mit ír ki? feladatok megoldásokkal

228. AA Default Konstruktor AA 228.

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

1. Bevezetés A C++ nem objektumorientált újdonságai 3

3. Osztályok II. Programozás II

1. Alapok. Programozás II

500.AJ Megoldó Magyar Magdolna 500.J

500. DD Megoldó Alfréd DD 500.

117. AA Megoldó Alfréd AA 117.

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?

- 1 - Konstansok használata. Döntsük el, van-e fordítási idejű hiba az alábbi programrészletekben! a) const char * str="zh"; str[0]++;

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Objektumok inicializálása

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

C++ programozási nyelv

Pénzügyi algoritmusok

1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4

infix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália

C++ programozási nyelv Konstruktorok-destruktorok

Objektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja

Számítógép és programozás 2

Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok

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

Bevezetés, a C++ osztályok. Pere László

Bevezetés a programozásba I.

Objektumelvű programozás

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

AA MEGOLDÓ ALADÁR AA

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

e) Írj kódrészletet, mely az int d változó utolsó előtti bitjét 1-re állítja.

Programozási Nyelvek: C++

Pénzügyi algoritmusok

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

1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció

Programozás II gyakorlat. 6. Polimorfizmus

mul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.

C++ Gyakorlat jegyzet 7. óra

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

C++ Gyakorlat jegyzet 8. óra

Fejlett programozási nyelvek C++ Iterátorok

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

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

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

Bevezetés a programozásba előadás: Öröklődés

Programozás módszertan

Alkalmazott modul: Programozás 9. előadás. Strukturált programozás: dinamikus adatszerkezetek

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Bevezetés a programozásba Előadás: A const

Programozás II. 6.Öröklés Dr. Iványi Péter

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

osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1

Elemi Alkalmazások Fejlesztése II.

Programozás. Osztályok, Származtatott osztályok. Fodor Attila

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

111. AA Megoldó Alfréd AA 111.

Programozás. C++ típusok, operátorok. Fodor Attila

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

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

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

Bevezetés a programozásba 2

Programozás 2. gyakorlat

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

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

Cekla. Készítette Doxygen Tue Sep :13:44

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

Virtuális függvények (late binding)

Java és web programozás

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

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

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

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

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

Adatszerkezetek és algoritmusok

BME MOGI Gépészeti informatika 8.

Osztály és objektum fogalma

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

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

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

C++ programozási nyelv Konstruktorok Gyakorlat

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása. Biztonságos adattípusok megvalósítása

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

Java és web programozás

Informatikai Kar. 3. fejezet. alapismeretek. Giachetta Roberto

Átírás:

NEPTUN kód: NÉV: Aláírás: Programozás 2. NZH, 2019. május 14. BME-TTK, fizika BSc Arcképes igazolvány hiányában nem kezdheted meg a ZH-t. A feladatok megoldására összesen 90 perc áll rendelkezésre. A feladatlapot névvel ellátva akkor is be kell adni, ha semmilyen megoldást sem készítettél. Minden feladatmegoldást külön lapra írj! Minden lapra írd fel a neved és a neptun kódod, valamint a feladat sorszámát! Ezek hiányában a feladatot nem értékeljük. Szabványos C++98/11 megoldásokat értékelünk csak. feladat pont min elért 1. 10 2. 10 3. 10 4. 10 40 14..13 elégtelen, 14..20 elégséges, 21..27 közepes, 28..34 jó, 35.. jeles A feladatokban szükség lesz az alábbi két osztályra: Az alább felsorolt, kívülről is elérhető tagfüggvényekkel rendelkező Pet osztály. Kívülről el nem érhető (a leszármazott számára sem) módon, megfelelő típusú tagváltozókban tárolja a kisállat fajnevét (pl. kutya, macska, homár...) és árát. Pet(const std::string &faj, unsigned ar); virtual void print()const; //kiírja a fajt és az árat virtual ~Pet(); Az alább felsorolt, kívülről is elérhető tagfüggvényekkel rendelkező Rac osztály. Az osztály egy racionális számot reprezentál. Kívülről el nem érhető módon, int típusban tárolja a sz és n komponenst. Egyszerűsített alakot tárol, amihez privát simplify() függvénnyel bír. Rac(int sz, int n); int getsz()const; int getn()const; Rac sqr()const; //szam negyzete 1. feladat: Öröklés, sablonok (2 5 p) a) Származtass Kutya osztályt a Pet osztályból! A kutya többlettulajdonsága a kisállathoz képest a fajta (pl. komondor, mudi, kuvasz...) és az egyed neve. Készíts konstruktort, mely beállítja az összes tagváltozót, valamint print függvényt, amely kiírja egy kutya összes jellemzőjét. A Pet osztályt nem módosíthatod. Írd meg a tesztelő kétsoros kódrészletét, melyben létrehozol egy kutyát, és kiírod a jellemzőit. class Kutya : public Pet std::string fajta, nev; Kutya(unsigned ar, const std::string& fajta, const std::string &nev) :Pet("Canis Lupus",ar), fajta(fajta), nev(nev) void print() const Pet::print(); std::cout << fajta << nev; ; Kutya k(12000, "foxterrier", "Lexi"); k.print(); b) Készítsd el a megadott Rac osztály sablon változatát, ahol a sablonparaméter a tagváltozók típusát adja! (A tagfüggvények implementációját is írd meg.) Hibás adatra nem kell figyelned. Egysoros példával (short-okkal reprezentált racionális szám változó) mutasd meg a sablon használatát. template <class T> class Rac T sz, n;

void simplify()/ * nem kellett megvalositani * / Rac(T sz, T n) :sz(sz), n(n) T getsz()const return sz; T getn()const return n; Rac sqr()const return Rac(sz * sz,n * n); ; Rac<short> r1(2,3); 2. feladat: Operátorok Egészítsd ki a feladatok felett megadott Rac osztályt a következő operátorokkal. Amit lehetséges, tagfüggvényként valósítsd meg. Mindegyik operátor a racionális számoktól, valamint az adott operátortól megszokott/elvárható módon viselkedjen, ígérjen konstans viselkedést, ahol lehetséges. Hibás adatra nem kell figyelned. Figyelj oda, hogy mindig egyszerűsített alakot tárolj, valamint nincs default ctor. Rac - Rac, Rac /= Rac, ~ Rac, reciprokképző, Rac == Rac, int * Rac, std::ostream-re kiíró << (két, szóközzel elválasztott egész számot írjon ki) és (float) Rac (típuskonverzió operátor valósra). A Rac osztálynak a feladatok felett felsorolt (létező) tagfüggvényeit nem kell megírnod, elegendő kipontoznod deklarációjuk helyét az osztályban. Készíts rövid main függvényt, melyben bemutatod valamennyi operátor használatát! #include <stdexcept> class Rac... Rac operator-(const Rac& rhs)constreturn Rac(sz * rhs.n-n * rhs.sz,n * rhs.n); const Rac& operator/=(const Rac& rhs)sz * =rhs.n;n * =rhs.sz;return * this; Rac operator~()constreturn Rac(n,sz); bool operator==(const Rac& rhs)constreturn sz==rhs.sz && n==rhs.n; operator float()constreturn (float)sz/n; ; Rac operator * (int k, const Rac& rhs) return Rac(k * rhs.getsz(),rhs.getn()); std::istream& operator>>(std::ostream& os, const Rac& rhs) os<<rhs.getsz()<< <<rhs.getn(); return os; Rac r1=rac(3,2), r2(2,4); r1=r1-r2; r2/=r1;

r1=~r1; std::cout<<r2; if(r1==r2) r2=5 * r2; std::cout<<(float)(r1)<<std::endl; 3. feladat: Tároló Készíts hosszú egész (long) értékeket tárolni képes várakozási Sor osztályt! A Sor egy tároló, mely tetszőlegesen sok értéket tud tárolni. A Sorhoz új elemet hozzáadni a push, elemet kivenni a pop tagfüggvénnyel lehet. A push függvény mindig a tömb végére helyezi az új elemet. A pop függvény a legrégebben betett értéket adja vissza, és egyúttal el is távolítja a Sorból. Az elkészített Sor osztály a következőket kell tudja: dinamikus tömbben tárolja az értékeket (nem használhatsz STL tárolót). Írd meg az alapértelmezett konstruktort, destruktort, másoló konstruktort és az értékadó operátort! Írd meg a pop függvényt is, amely visszaadja a legrégebben betett értéket, és egyúttal el is távolítja azt a Sorból. Ha üres Sorra hívja a felhasználó a pop függvényt, dobjon std::underflow_error kivételt! A push függvényt nem kell elkészítened, de feltételezheted, hogy létezik, és ha kell, használhatod. Írj main függvényt, melyben kb. 8 sorban bemutatod a Sor használatát. +1 bónuszpontért: kapd el a Sor által esetleg dobott kivételt. Elkapott kivétel esetén írj ki hibaüzenetet! #include <stdexcept> class Sor int elemszam; long * adat; Sor()elemSzam=0; adat=null; Sor(const Sor &m) adat=null; * this=m; const Sor& operator=(const Sor &m) if(this!=&m) elemszam=m.elemszam; delete[] adat; adat=new long[elemszam]; for(int i=0;i!=elemszam;++i) adat[i]=m.adat[i]; return * this; ~Sor()delete[] adat; void push(long elem); long pop() if(elemszam==0) throw std::underflow_error("hiba: ures sor"); long ret=adat[0], * t=new long[elemszam-1]; for(int i=1;i!=elemszam;++i) t[i-1]=adat[i];

delete[] adat; adat=t; --elemszam; return ret; ; try Sor h,g; h.push(3l); h.push(2l); g=h; std::cout<<h.pop(); std::cout<<g.pop()<<g.pop(); catch(std::exception &e) std::cerr<<e.what(); 4. feladat: STL Egy biológus egy hím kísérleti szarvasbogár mozgását szeretné elemezni. A bogár az origóból indul, pozícióját másodpercenként mérték a laboratórium asztalához rögzített descartes-i koordinátarendszerben, centiméter egységben, az érvényes tartományon valamelyik koordináta nemnegatív. Ezt a rögzített adatsorozatot kapja majd a programunk a szabványos bemenetén szóközzel elválasztott valós számpárok formájában. Az utolsó érvényes adatot két negatív érték követi. Készíts programot, amely egy std::vector-ban tárolja a mért adatokat. A koordinátákat adott Vekt2D típusú objektumokban kell tárolni, értelemszerűen az origóból az adott pontba mutató vektor. A Vekt2D típust nem kell létrehoznunk; publikus valós tagváltozókkal bír (x, y), és rendelkezik aritmetikai, valamint kiíró és beolvasó operátorokkal. Az std::vector ilyen Vekt2D-ket tároljon! Szükség szerint létrehozhatsz segítő függvényt vagy osztályt. a) Olvasd be, és tárold el a nyomkövető által szolgáltatott koordinátákat! b) Váltsd át méterbe az összes koordinátát, és az eredményt helyezd egy új tömbbe. Ha STL algoritmust használsz, és ezt helyesen teszed, +1 bónuszpontot kapsz. c) Hozzuk létre a bogár sebességvektorának tömbjét, majd a skalár sebességértékek tömbjét. (Természetesen ez utóbbi már valósak tömbje, amibe a vektorok abszolút értéke kerül.) Ha STL algoritmust használsz, és ezt helyesen teszed, +1 bónuszpontot kapsz. d) Az útja során egyszer állt csak meg a szarvasbogár (két egymást követő mért pont azonos), ahol igen kis koncentrációban nőstény feromont helyeztünk el. Hányadik másodpercnél történt ez? Mennyi volt a bogár csúcssebessége? Ha STL algoritmust használsz, és ezt helyesen teszed, +1 bónuszpontot kapsz. #include <vector> #include <algorithm> #include <numeric> #include "vekt2d.h" Vekt2D cm2m(const Vekt2D &v)//function return Vekt2D(v.x/100,v.y/100); //v/100 is jo

class hossz//functor double operator()(const Vekt2D &u) return std::sqrt(u.x * u.x+u.y * u.y); ; Vekt2D a; std::vector<vekt2d> s; std::cin>>a; while(a.x>=0 a.y>=0) s.push_back(a); std::cin>>a; std::vector<vekt2d> s_m(s.size()); std::transform(s.begin(),s.end(),s_m.begin(),cm2m); //+1p std::vector<vekt2d> vv(s_m.size()); std::adjacent_difference(s_m.begin(),s_m.end(),vv.begin()); // +1p std::vector<double> v(vv.size()); std::transform(vv.begin(),vv.end(),v.begin(),hossz()); std::vector<double>::iterator megall=std::min_element(v.begin()+1,v.end()), max_seb=std::max_element(v.begin(),v.end()); // +1p std::cout<<"megallas "<<megall-v.begin()<<" masodperc\n"; std::cout<<"leggyorsabb "<< * max_seb;