Informatika2-2016/Gyakorlat12

A MathWikiből

Tartalomjegyzék

Feladatok

A feladatok megoldásához szükség lesz az előadáson használt kódra. Az előadás anyagát innen lehet letölteni.

Bevezető

Másoljuk be a bináris fa definícióját. Ezen az osztályon fogunk dolgozni.

  • Írjunk egy count(self) metódust, ami megszámolja a fa elemeinek a számát!
  • Írjunk egy sum(self) metódust, ami a fa összes csúcsában lévő értékeket összegzi!
  • Írjunk egy height(self) metódust, ami megmondja, hogy milyen magas a fa!
  • Írjunk egy is_list(self) metódust, ami megmondja, hogy a bináris fa listává fajult-e. Egy bináris fa akkor fajult listává, ha minden csúcsának legfeljebb egy gyereke van.

Számológép

Az előadáson mutatott számológép-kezdeményt feljesztjük tovább. Kezdjük új fájlba. Először hozzunk létre egy üres Node osztályt!

  • Írjuk meg a konstruktort a következőképp. A bemenet egy sztring, ezt kell értelmeznünk. Egyelőre a bemeneti sztring nem tartalmazhat zárójelet, sem negatív számokat.
    • Ha a sztring egy szám, akkor egyszerűen eltároljuk a self.data változóban mint számot.
    • Ha nem szám (azaz a négy alapművelet egyike szerepel a sztringben), akkor szétvágjuk a sztringet két részre a legalacsonyabb precedenciaszintű művelet mentén. Mivel zárójeleket nem engedünk meg, a legalacsonyabb szintű művelet az első + vagy - jel, ha nincs ilyen, akkor pedig az első * vagy /. A self.data értéke a műveleti jel lesz mint karakter, a bal, illetve a jobb gyereke pedig a sztring két széthasított része alapján épüljön fel!
  • Számoljuk ki egy ilyen műveletsor értékét!
  • Szeretnénk hatványozni is, építsük bele ezt a ^ jellel!

Egy kis állapotgép

  • Adott egy sztring. Cseréljük le azokat a karaktereket $ jelre, amelyek zárójelek között vannak (a zárójeleket is beleértve)! Figyelem, a zárójelek lehetnek egymásba ágyazva is, tehát, ha a bemeneti sztring (xc)aa(c(b)), akkor a kimenet $$$$aa$$$$$$ legyen!

Vissza a számológépünkhöz

Tanuljunk meg zárójeleket kezelni.

  • Ha a bemeneti sztring teljes egészében zárójelben van (ez részfaépítésnél bizony megtörténik), szedjük le róla!
  • Keressük meg azt a műveletet, amit utoljára kell elvégeznünk. Ezt a karaktert a sztring azon részében keressük, ami nincs zárójelek között!
  • Rekurzió!
Személyes eszközök