Féléves feladatok C++ nyelven 1. Egy könyvespolc mindhárom szintje egyforma szélesség¶, de eltér® magasságú: kicsi, közepes és nagy könyvek férnek rá. A könyvespolcra akkor lehet könyvet feltenni, ha van elegend® szabad hely a könyvnek megfelel®, vagy annál magasabb polcon. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 2. Egy hídon 2,5 méter hosszú személygépkocsik, 10 méter hosszú teherautók, és 12 méter hosszú buszok mennek át. Egy közlekedés-felügyel® szoftver gyeli, hogy mennyi a hídon lév® autók összhosszúsága, és csak akkor ad zöld lámpát a következ® autónak, ha a hídon lév® autók összhossza nem haladja meg a híd hosszának 80%-át. Az autók a hidat olyan sorrendben hagyják el, amilyen sorrendben érkeztek. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 3. Egy hídon 600 kilós személygépkocsik, 2,5 tonnás teherautók, és 20 tonnás villamosok mennek át. Egy közlekedésfelügyel® szoftver gyeli, hogy mennyi a hídon lév® járm¶vek össztömege, és csak akkor ad zöld lámpát a következ® járm¶nek, ha a hídon lév® járm¶vek össztömege nem haladja meg a híd teherbírásának 23%-át. Az autók a hidat olyan sorrendben hagyják el, amilyen sorrendben érkeztek, a villamos és az autók sorrendje viszont tetsz®leges. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 4. Egy konyhaszekrényben háromféle dobozban tárolhatunk ev®eszközöket. A kicsiben 18 darab fér el, a közepesben 27, a nagyban 40. A közepes doboz másfélszer akkora helyet foglal, mint a kicsi, a nagy pedig kétszer akkorát. A szekrényhez addig adhatunk hozzá dobozokat, míg van benne hely újabb doboz számára, és addig adhatunk a szekrényhez ev®eszközöket, míg van hely a dobozban. Az ev®eszközöket is, és a dobozokat is ki lehet venni a szekrényb®l, ha egy dobozt kiveszünk, akkor a benne lév® ev®eszközöket is eltávolítottuk. Ha akar, alkalmazhat megkötéseket a doboz, vagy az ev®eszköz kivétel sorrendjére! Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 5. A metrón háromféle jeggyel lehet utazni. A szakaszjegy maximum 3, a szakasz-átszálló 5 megállóra jó (a kiindulásin kívül), a normál jegy az egész vonalon érvényes. Készítsen olyan szoftvert, mely nyilvántartja, hogy egy adott utas milyen jeggyel rendelkezik, és kirúgja a metróból, ha a jegye által megadott számú megállón túl is utazni szeretne. (Az egyszer¶ség érdekében átszállni nem lehet.) Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 6. Egy túrórudigyárban háromféle rudit gyártanak: kicsit, közepest és nagyot. Kicsib®l 301 000 db/nap a kapacitás, közepesb®l 234 000 db/nap, nagyból 177 000 db/nap. A berendezések átállítása fél napot vesz igénybe. Készítsen olyan szoftvert, amely rendeléseket dolgoz fel, és a gyár számára megmondja, mikor milyen rudiból mennyit kell gyártania. A szoftver csak akkor fogadjon el megrendelést, ha a gyárban a szállítás dátumáig valóban le tudják gyártani a rudikat úgy, hogy a korábbi megrendeléseket is biztosan ki tudják elégíteni, gyelembe véve a gyár átállítását is. A szoftver legyen képes megmondani azt a legközelebbi id®pontot, ameddig a kívánt mennyiség¶ rudit le tudják szállítani. A gyár a hét minden napján üzemel.
Opcionális feladat : a szoftver legyen képes optimalizálni a gyártást, azaz lehet®leg minél több azonos típusú terméket gyártsanak egyszerre, hogy ne kelljen átállással bajlódni, továbbá törekedjen minél több olyan napra, amikor a gyár nem üzemel, hogy a dolgozókat zetés nélküli szabadságra lehessen küldeni, illetve lehet®leg hétvégéken se üzemeljen, hogy ne kelljen extra bért zetni. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja!
EET (2009. március 24.)
7. Egy raktárban székeket, monitorokat és szemeteskukákat tárolnak. A szék és a monitor egy egységnyi helyet foglal, a kuka fél egységnyit. Két széket egymásra lehet tenni, ekkor a két szék helyfoglalása együtt másfél egység. Egy monitor befér egy szék alá, így a kett® helyfoglalása együtt két egység. Két kuka befér egy szék alá, így a kett® helyfoglalása egy egységnyi. Egy monitor vagy két kuka befér két, egymásra pakolt szék alá is. Készítsen raktárkezel® szoftvert, mely beteszi a raktárba a felhasználó által megadott bútort, ha befér, vagy jelzi, ha nem fér be. A raktár méretét a raktár létrehozásakor lehessen megadni, ez kés®bb már nem módosítható. Bútorokat egymásra pakolni csak a raktár szélén lehet, tehát például egy monitort csak akkor lehet betenni egy szék alá, ha az el®tte utoljára berakott elem szék volt, vagy közvetlenül utána szék érkezik. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 8. Egy áruházba háromféle ember léphet be: ®r, eladó és vev®. Az ®r bármikor beléphet, de csak akkor hagyhatja el az áruházat, ha van bent rajta kívül más ®r is, vagy ha senki sincs bent rajta kívül, ® az utolsó. Eladó csak akkor léphet be, ha van bent ®r, és csak akkor léphet ki, ha nincs bent vev®. Vev® csak akkor léphet be, ha van bent eladó, és bármikor kiléphet. Az áruház befogadóképessége meghatározott, ha ezt meghaladja a bent tartózkodók száma, akkor senki sem léphet be, míg fel nem szabadul egy hely. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 9. Egy elektromos hálózatra kisfogyasztók, nagyfogyasztók és er®m¶vek csatlakoznak. Er®m¶ bármikor fölcsatlakozhat és lecsatlakozhat a hálózatról. Fogyasztó csak akkor csatlakozhat, ha van elég er®m¶vi kapacitás, és bármikor lecsatlakozhat. Ha egy er®m¶ lecsatlakozik, és a maradék kapacitás nem elég a fogyasztók kiszolgálására, akkor a rendszer lekapcsolja el®bb a nagyfogysztókat, ha nincs több nagyfogyasztó, akkor a kisfogysztókat. A lecsatolás a becsatlakozás sorrendjével ellentétes sorrendben történjen. A kapacitáshiány miatt lecsatolt fogyasztók várakozó helyzetbe kerüljenek, ami azt jelenti, hogy amint lesz elég kapacitás, mert új er®m¶ csatlakozik, vagy más fogyasztók lecsatlakoznak, automatikusan visszakerülnek. Ha egy változás hatására több fogyasztó is visszacsatlakozhatna, akkor közülük a legrégebben várakozót kell visszacsatolni. Ha van szabad kapacitás, van várakozó, de minden várakozónak több kapacitás kell, mint ami rendelkezésre áll, és új fogyasztó jelentkezik, akinek elég lenne a kapacitás, akkor az új fogyasztó csatlakozhat. A várakozásban lév® fogyasztók is lecsatlakozhatnak. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 10. Egy kereskedelmi vállalat hajóval, repül®vel és teherautóval szállítja az áruit. A hajó kilométerenként egy egységbe kerül, a teherautó kett®be, a repül® tízbe. Minden járm¶ két megadott település között közlekedik. Lehet®ség van új járat indítására, és meglév® járat megsz¶ntetésére. Készítsen szoftvert, mely az összes lehet®ség gyelembevételével eldönti, hogy a cég milyen útvonalon, milyen járm¶vek igénybevételével jár a legjobban, azaz melyik a legolcsóbb. A hajók, repül®k és teherautók nem ugyanazon az útvonalon haladnak két helység között, ezért járm¶típustól függ®en nem azonos két település távolsága. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 11. Egy újságban egész oldalas, féloldalas és harmadoldalas hirdetéseket lehet feladni. Az egész oldalas, féloldalas és harmadoldalas helyek mennyisége a létrehozáskor d®l el. Készítsen szoftvert, mely a sorban érkez® megrendelésekkel feltölti a szabad helyeket. Amíg van szabad hely a megrendelt méretnek, addig oda tegye a hirdetést. Ha valamelyik méret betelt, akkor a hirdetést nagyobb szabad helyre is lehet tenni. Egy egész oldalas helyre, két féloldalas, három harmadoldalas, egy fél- és egy harmadoldalas hirdetés fér stb. Törekedjen optimális helykihasználásra, azaz pl. csak akkor tegyen harmadoldalas hirdetést féloldalas helyre, ha már máshová nem fér, különben a maradék hatod oldal kihasználatlan marad. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 12. Készítse el egy cip®be cip®f¶z®t f¶z® cég szoftverét! A cég háromféle cip®t f¶z: kicsit, közepeset és nagyot, háromféle cip®f¶z¶vel: kicsivel, közepessel és naggyal. Folyamatosan érkeznek a cip® és a cip®f¶z® szállítmányok, de sorrendjük kiszámíthatatlan. Minden cip®be lehet®leg neki megfelel® méret¶ f¶z®t kell f¶zni, de ha nincs, akkor nagyobbat is lehet használni, kisebbet viszont nem. Amikor beérkezik egy szállítmány, be kell f¶zni annyi cip®t, amennyit lehet, az elkészült f¶zött cip®khöz használt alapanyagok levonódnak a raktárkészletb®l. Jelezze, ha az aktuális szállítmányt részben vagy egészben nem tudta fölhasználni, és közölje, mennyi sikerült, mennyi került raktárba, illetve mib®l mennyi került felhasználásra. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja!
EET (2009. március 24.)
13. A termeszhangyák új várat építenek, ehhez háromféle homokszemet használnak föl, melyeket a szép fúj hozzájuk. A homokszemek felülete x, 2x és 4x, magasságuk egyforma. Belül csak a nagy szemeket használják, középen a közepest és a nagyot, kívül mindhármat. Ha nagy szem érkezik, azt belülre kell tenni, ha nem lehet, akkor mehet csak középre, és ha oda sem jó, akkor kívülre. A közepes szem csak akkor mehet kívülre, ha középre nem fér el. A három rész felülete a termeszvár deniálásakor d®l el, csakúgy, mint az építend® magasság. A középs® rész sosem lehet magasabb, mint a bels®, és a küls® sosem lehet magasabb, mint a középs® az építés során. Az építkezés akkor ér véget, ha mindhárom rész eléri a tervezett magasságot. Ha olyan homokszem érkezik, amit nem lehet beépíteni, mert az adott rész elérte a kívánt magasságot, vagy a szem beépítésével egy küls®bb rész magasabb lenne, mint egy bels®bb, akkor a termeszek szélnek eresztik a szemet. Új szint csak akkor kezdhet®, ha az adott szint teljesen betelt. Minden egyes homokszem érkezésekor tájékoztasson az adott szem sorsáról! Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet! Az objektumok m¶ködését mintaprogrammal demonstrálja! 14. Készítsen objektumot a Reversi (Othello) nev¶ játék megvalósításához! Az objektum tárolja a játék állását és ismerje a szabályokat, azaz automatikusan forgassa át megfelel® korongokat, melyek szintén objektumok! Demonstrálja a m¶ködést külön modulként fordított tesztprogrammal! A tesztprogram egy két ember egymás elleni játéka lehet. (A gépnek nem kell tudnia a felhasználó ellen játszani.) Rajzolja ki a program karakteres üzemmódban a játékállást, az egyes sorokat és oszlopokat számmal, illetve bet¶vel megjelölve; utána a felhasználók a megfelel® indexek megadásával helyezhessék el bábuikat (pl. D5). 15. Készítse el egy processzor modelljét C++ nyelven! A processzornak legyen memóriája, ahol gépi utasítások és adatok helyezhet®ek el, és legyen képes ezeket programként vérgehajtani. Az utasításokat a többalakúság (polimorzmus) segítségével valósítsa meg annak érdekében, hogy a programfuttatás egységes felületen történhessen. Nem szükséges egy valódi processzor teljes utasításkészletét modellezni, de mindenképp legyen néhány aritmetikai, logikai, adatmozgató és ugró (feltételesen ugró ) utasítás is. A tesztelés érdekében legyen egy kiírató gépi utasítás. A tesztprogramnak az alábbihoz hasonló alakúnak kell lennie:
Processor p; p.memory().add(mov(ax, 20)); p.memory().add(mov(bx, 2)); p.memory().add(mov(cx, 0)); p.memory().add(div(ax, bx)); p.memory().add(jnz(6)); p.memory().add(inc(cx)); p.memory().add(cmp(bx, 10)); p.memory().add(jz(10)); p.memory().add(inc(bx)); p.memory().add(jmp(3)); p.memory().add(print(cx)); p.run(); 16. Készítsen programot digitális áramkörök modellezésére! Valósítsa meg az alapvet® logikai kapukat (ÉS, VAGY, INVERTER, ip-opok), tegye lehet®vé az összekapcsolásukat és demonstrálja a m¶ködést egy példakóddal! A logikai jelek függvényhívások segítségével haladjanak a hálózaton belül: a kapuk hívják meg a kimenetükön lév® kapuk eseménykezel® függvényét, amennyiben az állapotuk változott.
Opcionális feladatok: • Oldja meg, hogy a rendszer a visszacsatolást is lekezelje! Természetesen egy, a valóságban is oszcillációt okozó visszacsatolás eredményezhet végtelen rekurziót, de egy stabil (pl. RS ip-op két NEM-ÉS kapuból) nem. • Modellezze a kapukésleltetést! A szimulátor bels® id®egységének többszöröseként lehessen megadni az egyes kapuk késleltetését és ez jelenjen meg a jelek továbbításában! 17. Egy Síkidomokat tároló Doboz korlátozott összfelület¶ Síkidom tárolására alkalmas. A kapacitása a létrehozásakor legyen beállítható, kés®bb már nem változtatható. Pillanatnyilag Háromszögekkel, Trapézokkal és szabályos Nszögekkel rendelkezünk. Minden Síkidom tudja megmondani magáról, hogy szabályos-e, valamint a kerületét és a területét megállapítani! A Doboz legyen képes kitörölni magából a szabálytalan Síkidomokat (a Háromszög EET (2009. március 24.)
és a Trapéz is lehet szabályos! (utóbbi ekkor nyilván négyzet)), valamint kerület szerinti sorrendben kilistázni a Síkidomokat! Továbbá lehessen beletenni újabb Síkidomot, mely csak akkor kerül bele, ha van elég hely, egyébként törl®dik, illetve lehessen kivenni a legkisebb terület¶ Síkidomot ( vagyis visszaadja a Síkidom címét, és egyúttal eltávolítja a Dobozból, de nem semmisíti meg)! Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet, valamint C++ állománykezelést (minden objektum legyen képes elmenteni ill. betölteni magát a paraméterként megadott fájlból)! Az objektumok m¶ködését mintaprogrammal demonstrálja! 18. Egy A×B méret¶, téglalap alakú Kertben Zöldségeket szeretnénk termelni, A és B mérete cm-ben adott, és a Kert deniálásakor kell meghatározni, ez kés®bb nem változhat. Háromféle zöldséget termesztünk: Káposztát, Répát és Paradicsomot. A Káposzta 30 × 30, a Répa 4 × 4, a Paradicsom 18 × 42 cm helyet igényel. A Zöldségek téglalap alakú Ágyásokba ültethet®k, egy Ágyásba csak egyféle. Két Ágyás között legalább 30 cm távolság legyen! Egy Ágyás mérete megnövelhet® (ha van mellette szabad hely), de nem csökkenthet®. Az öntözés miatt nem ültethet® zöldség (azaz középpontja nem lehet) az ágyás legalább egyik szélét®l 150 cm-nél távolabb. Készítsen programot, amely a gazda igényei szerint kijelöli az ágyásokat a gazda által megadott zöldségek számára! A gazda egy Zöldséget ad a Kertnek, a Kert dolga ezt elhelyezni. A program törekedjen minél optimálisabb helykihasználásra! Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet, valamint C++ állománykezelést (minden objektum legyen képes elmenteni ill. betölteni magát a paraméterként megadott fájlból)! Az objektumok m¶ködését mintaprogrammal demonstrálja! 19. Készítse el egy színház Toalettjének automatikus beléptet®programját! Háromféle Ember használhatja a Toalettet: aki az Angolvécét, aki a Piszoárt és aki a Mosdót akarja igénybe venni. A Toalettben rendelkezésre álló Angolvécé, Piszoár, ill. Mosdó mennyisége a Toalett deniálásakor d®l el. Az Angolvécék és Mosdók mennyisége legalább egy kell legyen, ha a Piszoár mennyisége nulla, akkor n®i Toalettr®l van szó, olyan ember ide nem engedhet® be, aki Piszoárt szeretne igénybe venni. Az Angolvécét, Piszoárt ill. Mosdót igényl® személy nyilvántartja, hogy a szolgáltatást mennyi ideig kívánja igénybe venni. A Toalett állapotának ellen®rzése az új belép® jelentkezésekor történik: a jelentkez® Angolvécé/Piszoár/Mosdó objektum mellett az aktuális id®pontot, egy egész számot is meg kell adni. Ekkor a Toalett ellen®rzi, hogy a foglalt egységek használói közül kik vannak készen. Ha egy Mosdó használója készen van, akkor felszabadítja a helyet (az illet® elhagyja a Toalettet). Ha egy Angolvécé vagy Piszoár használója van kész, akkor az illet®t egy szabad Mosdóhoz továbbítja (a Piszoárt és Angolvécét igényl® ügyfelek a Mosdó használatához szükséges id®t is nyilvántartják). Ha nincs elég szabad Mosdó, az illet® tovább várakozik a fülkéjében, így a hely nem szabadul fel. Az Angolvécét ill. Piszoárt használók érkezési sorrendben juthatnak Mosdóhoz. Az új belép®t csak akkor engedi be a rendszer, ha van szabad olyan hely, ahová menni akar, egyébként visszautasítja. Ha a specikáció nem fed le minden részletet, értelemszer¶en egészítse ki a program megvalósításánál! Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet, valamint C++ állománykezelést (minden objektum legyen képes elmenteni ill. betölteni magát a paraméterként megadott fájlból)! Az objektumok m¶ködését mintaprogrammal demonstrálja! 20. Készítse el egy színház jegyeit értékesít® programot! Háromféle jegyet vásárolhatnak az ügyfelek: zsöllye, balkon és karzat. A Szegény Csoportok csak karzat jegyet vehetnek, a Normál Csoportok balkon és karzat jegyet, a Gazdag Csoportok zsöllye, balkon és karzat jegyet egyaránt. A Csoportok nyilvántartják, hogy hány tagjuk van, akik jegyet szeretnének, illetve azt, hogy számukra csak egymás mellé érvényes jegyek jók, vagy szét lehet ültetni ®ket a szabad helyekre. A Színház nyilvántartja, hogy hány hely van a karzaton, balkonon illetve zsöllyében. Mindhárom helyen sorok vannak, a sorokban lév® székek száma egy adott helyen azonos, de a zsöllyében, balkonon és karzaton más-más lehet a sorok ill. soron belüli székek száma. Ezek mennyiségét (tehát hat adatot) a Színház létrehozásakor kell megadni. A Színház jegyértékesít®je kap egy Csoportot, és megpróbálja kiszolgálni az adott csoport által igénybe vehet® legdrágább jegytípusból. Ha nem megy, akkor olcsóbbat választ. Ha egyáltalán nem tudja kiszolgálni, akkor visszautasítja. Egy Csoport jegyigényét teljes egészében ki kell szolgálnia azonos árkategóriában, részleges teljesítés nem lehetséges. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet, valamint C++ állománykezelést (minden objektum legyen képes elmenteni ill. betölteni magát a paraméterként megadott fájlból)! Az objektumok m¶ködését mintaprogrammal demonstrálja! 21. Egy Áruházban adott számú polcon lehet Árut elhelyezni. A polcok száma az Áruház létrehozásakor d®l el. Minden polcra 1000 egységnyi helyfoglalású Áru tehet®. Az Áruház folyamatosan fogadja a beszállítóktól beérkez® Árukat. Minden árufajtának egyedi azonosítója van. Deniáljon minimum három Árut (pl. 42-es cip®, kilós fehérkenyér, falusi csirke), mindegyiknek adjon egyedi azonosítót és megfelel® helyfoglalást! Ha egy beérkez® valamilyen típusú Áru egyetlen polcon sincs kirakva, akkor rakja egy üres polcra! Ha van olyan polc, amelyen van ilyen, akkor csak erre a polcra teheti a most érkezett Árut. Ha a polc teli van, akkor utasítsa el az Árut! A Vev® a bevásárló listáján szerepl® Árukhoz szeretne hozzájutni, az Áruház szolgálja ki, minél több igényét!
EET (2009. március 24.)
(Az eladott Árukat vonja le a polcról.) Ha egy polc kiürült, arra egy következ® szállítmányból más típusú áru is pakolható. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet, valamint C++ állománykezelést (minden objektum legyen képes elmenteni ill. betölteni magát a paraméterként megadott fájlból)! Az objektumok m¶ködését mintaprogrammal demonstrálja! 22. Egy horgász a pecabotjával Halakat fog ki. Süll® esetén 10 deka, Ponty esetén 25 deka, Harcsa esetén 90 deka a minimum, amit eltesz a Szákjába, de más fajtájú Halak is érkezhetnek, a horgász ezekr®l is el tudja dönteni, hogy súlyuk alapján megtartja-e, vagy sem! A Szák létrehozásakor d®l el, hogy hány kiló hal fér bele. Egy halat beletehet úgy, hogy a Szák még nem telt meg, de az új hallal együtt már a limit fölé kerül a tárolt mennyiség. Ha megtelt, közölje, és ne fogadjon el több halat! Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet, valamint C++ állománykezelést (minden objektum legyen képes elmenteni ill. betölteni magát a paraméterként megadott fájlból)! Az objektumok m¶ködését mintaprogrammal demonstrálja! 23. Egy Benzinkút 5000 literes üzemanyagtartályokat használ, N darabot. N értéke a Benzinkút létrehozásakor d®l el. Kezdetben mind üres. Teherautó hozza az Üzemanyagot, mindig más mennyiséget. Ha még nincs ilyen fajta, akkor üres tartályba teszi, ha nincs üres, visszautasítja a szállítmányt. Ha már van ilyen fajta, akkor beletölt ebbe a tartályba annyit, amennyit lehet. Ha nem fér bele mind, akkor ezt jelzi. Ha nem fér egyáltalán, akkor visszautasítja. Egy üzemanyagfajtából csak egy tartályban lehet. Autósok vásárolnak üzemanyagot: közlik, milyen fajtát szeretnének (minden fajtának egyedi azonosítója van), az általuk vett mennyiség levonódik a tartály tartalmából. Deniáljon legalább három üzemanyagtípust, pl.: 95-ös, 98-as, Dízel. Készítse el a szükséges osztályokat, használjon öröklést, dinamikus kötést és dinamikus adatszerkezetet, valamint C++ állománykezelést (minden objektum legyen képes elmenteni ill. betölteni magát a paraméterként megadott fájlból)! Az objektumok m¶ködését mintaprogrammal demonstrálja!
EET (2009. március 24.)