Informatika2-2021/CsütGyak06
A MathWikiből
(Változatok közti eltérés)
(→Reservation) |
|||
(egy szerkesztő 6 közbeeső változata nincs mutatva) | |||
52. sor: | 52. sor: | ||
</python> | </python> | ||
+ | =Reservation= | ||
+ | A következő feladatokban egy olyan rendszeren dolgozunk, ami egy moziban fogja nyomon követni a különböző emberek helyfoglalásait. Ehhez létre fogunk hozni egy <code>Reservation</code> nevű osztályt, ami egy ember foglalását tárolja, és ezt az osztály ellátjuk minden szükséges metódussal a kényelmes használathoz. | ||
== Reservation_1 == | == Reservation_1 == | ||
+ | Ebben a feladatban hozzuk létre a <b>konstruktort</b>. A foglalás osztály két tagváltozót tartalmazzon majd, és ezek legyenek a konstruktor paraméterei is, ebben a sorrendben: <ul> <li><b>name</b>, a mozi foglalás lefoglalójának neve</li> <li><b>seats</b>, egy lista, ami az üléseket tartalmazza amiket <i>name</i> lefoglalt. Minden ülés egy karakterlánccal van leírva, pl. "E12"</li> </ul> Egyelőre csak elég a konstruktort megírni, semmi más nem kell az osztályba még. <h4>Segítség</h4> <ul> <li>Ne felejtsük el, hogy (mint minden metódusnál) a konstruktor definiálásakor az első paraméter a <i>self</i> legyen.</li> </ul> | ||
− | < | + | == Reservation_2 == |
+ | |||
+ | Ebben a feladatban adjunk egy metódust a <i>Reservation</i> osztályhoz. A metódus neve legyen <b>not_taken</b>, és egy paramétere legyen (a <i>self</i>-en kívül): <ul> <li><b>lehetosegek</b>, ami egy lista, ami lehetséges üléseket tartalmaz.</li> </ul> A <i>not_taken</i> metódus térjen vissza a <i>lehetosegek</i> lista azon elemeivel, amik ebben a <i>Reservation</i> objektumban nincsenek lefoglalva. Az elemek maradjanak ugyanabban a sorrendben mint a <i>lehetosegek</i> listában voltak. <h4>Segítség</h4> <ul> <li>Ne felejtsük el, hogy az aktuális objektum foglalt helyeit a <i>self</i> referencia <i>seats</i> tagváltozóján keresztül érhetjük el.</li> </ul> | ||
+ | |||
+ | == Reservation_3 == | ||
+ | |||
+ | Ebben a feladatban kipróbáljuk, milyen használni az eddig megalkotott <i>Reservation</i> osztályt. Írjuk meg a <b>reservation_3</b> nevű függvényt, aminek paraméterei: <ul> <li><b>foglalasok</b>, egy lista, ami az éppen aktuális foglalásokat tartalmazza, <i>Reservation</i> típusú objektumok formájában</li> <li><b>osszes_ules</b>, egy lista, az adott mozi terem összes ülését tartalmazza</li> </ul> A függvény azoknak az üléseknek a listájával térjen vissza, amik még szabadak, tehát amik még egyik foglalásnak sem részei. <h4>Segítség</h4> <ul> <li>Használjuk a <i>Reservation</i> osztály <i>not_taken</i> nevű metódusát.</li> </ul> | ||
+ | |||
+ | == Reservation_4 == | ||
+ | |||
+ | Ebben a feladatban olyan metódust írunk, ami módosítja az objektum tartalmát. Az eddigi <i>Reservation</i> osztályunkban hozzunk létre egy új metódust, aminek a neve <b>change</b>, és paramétere (a <i>self</i>-en kívül): <ul> <li><b>uj_helyek</b>, egy lista, ami azt tartalmazza hogy mik a helyek amiket foglalni akar az illető a változtatás után.</li> </ul> A metódus változtassa meg az objektumot úgy, hogy átírja a <b>self.seats</b> változót, de ne térjen vissza semmivel. | ||
+ | |||
+ | == Reservation_5 == | ||
+ | |||
+ | Most használjuk a <i>Reservation</i> objektumainkat kicsit bonyolultabb feladatra. Írjuk meg a <b>reservation_5</b> nevű függvényt, aminek paraméterei: <ul> <li><b>foglalasok</b>, egy lista, ami az éppen aktuális foglalásokat tartalmazza, <i>Reservation</i> típusú objektumok formájában</li> <li><b>osszes_ules</b>, egy lista, az adott mozi terem összes ülését tartalmazza</li> <li><b>nev</b>, egy karakterlánc, az éppen foglalni próbáló vendég neve</li> <li><b>darab</b>, egy egész szám, hogy hány helyet szeretne lefoglalni</li> </ul> A függvény keressen <i>darab</i> olyan helyet, amik az <i>osszes_ules</i> listában egymás után szerepelnek, és még nincsenek lefoglalva. Ha talál ilyeneket, akkor azt a lehetőséget vegye, amelyiknek az ülései a legkorábban szerepelnek az <i>osszes_ules</i> listában, és adja vissza a foglalást egy <i>Reservation</i> típusú objektumban. Ha nem talál ilyen üléseket, akkor <i>None</i>-t adjon vissza. <h4>Segítség</h4> <ul> <li>Használjuk ez előző feladatok megoldását</li> </ul> |
A lap jelenlegi, 2021. március 18., 01:04-kori változata
Tartalomjegyzék |
Feladatok
Komplex
A feladat az előadáson elkezdett Komplex osztályt befejezni:
class Komplex(object): def __init__(self, real, imaginary): self.re = real self.im = imaginary def __add__(self, k2): uj_re = self.re + k2.re uj_im = self.im + k2.im return Komplex(uj_re, uj_im) def __str__(self): s = "" s += str(self.re) s += " + " s += str(self.im) s += "i" return s k1 = Komplex(4, 3) k2 = Komplex(-2, 1) k3 = k1 + k2 print(k3)
- Valósítsuk meg a kivonás, szorzás és osztás műveleteket. (__sub__, __mul__, __truediv__) Az osztás előtt érdemes lehet a következő részt megoldani először.
- Valósítsuk meg a norm metódust, mely a komplex szám hosszát adja meg.
- Javítsuk ki a __str__ metódust, hogy szépen írja ki a számokat, pl:
2 - 4i 5i 2
Teszteléshez használhatjuk pl ezt a kódot, de írjunk saját teszteket is!
k1 = Komplex(4, 3) k2 = Komplex(-2, 1) k3 = Komplex(4, 1) print k1 + k2 print k1 - k3 print k2 * k1 print k3 / k1 print k1.norm()
Reservation
A következő feladatokban egy olyan rendszeren dolgozunk, ami egy moziban fogja nyomon követni a különböző emberek helyfoglalásait. Ehhez létre fogunk hozni egy Reservation
nevű osztályt, ami egy ember foglalását tárolja, és ezt az osztály ellátjuk minden szükséges metódussal a kényelmes használathoz.
Reservation_1
Ebben a feladatban hozzuk létre a konstruktort. A foglalás osztály két tagváltozót tartalmazzon majd, és ezek legyenek a konstruktor paraméterei is, ebben a sorrendben:- name, a mozi foglalás lefoglalójának neve
- seats, egy lista, ami az üléseket tartalmazza amiket name lefoglalt. Minden ülés egy karakterlánccal van leírva, pl. "E12"
Segítség
- Ne felejtsük el, hogy (mint minden metódusnál) a konstruktor definiálásakor az első paraméter a self legyen.
Reservation_2
Ebben a feladatban adjunk egy metódust a Reservation osztályhoz. A metódus neve legyen not_taken, és egy paramétere legyen (a self-en kívül):- lehetosegek, ami egy lista, ami lehetséges üléseket tartalmaz.
Segítség
- Ne felejtsük el, hogy az aktuális objektum foglalt helyeit a self referencia seats tagváltozóján keresztül érhetjük el.
Reservation_3
Ebben a feladatban kipróbáljuk, milyen használni az eddig megalkotott Reservation osztályt. Írjuk meg a reservation_3 nevű függvényt, aminek paraméterei:- foglalasok, egy lista, ami az éppen aktuális foglalásokat tartalmazza, Reservation típusú objektumok formájában
- osszes_ules, egy lista, az adott mozi terem összes ülését tartalmazza
Segítség
- Használjuk a Reservation osztály not_taken nevű metódusát.
Reservation_4
Ebben a feladatban olyan metódust írunk, ami módosítja az objektum tartalmát. Az eddigi Reservation osztályunkban hozzunk létre egy új metódust, aminek a neve change, és paramétere (a self-en kívül):- uj_helyek, egy lista, ami azt tartalmazza hogy mik a helyek amiket foglalni akar az illető a változtatás után.
Reservation_5
Most használjuk a Reservation objektumainkat kicsit bonyolultabb feladatra. Írjuk meg a reservation_5 nevű függvényt, aminek paraméterei:- foglalasok, egy lista, ami az éppen aktuális foglalásokat tartalmazza, Reservation típusú objektumok formájában
- osszes_ules, egy lista, az adott mozi terem összes ülését tartalmazza
- nev, egy karakterlánc, az éppen foglalni próbáló vendég neve
- darab, egy egész szám, hogy hány helyet szeretne lefoglalni
Segítség
- Használjuk ez előző feladatok megoldását