Általános leírás
Az órán vett formula adatszerkezetet fogjuk tovább fejleszteni különböző metódusokkal. Az alábbi metódusokat kell megvalósítanod a formula adatszerkezetedhez:
- Konstruktor Formula(infix_szöveg) -- Írj olyan konstruktort a formulához, amely egy infix zárójeles alakban megadott kijelentéslogikai formulát beolvas. (Használd fel a számológépes programból ismert shunting yard algoritmust!) A műveletek prioritásai: Az ¬ a legerősebben kötő művelet, aztán a jönnek a ∧,∨,↑,↓ műveletek, majd a →, és végül a ↔.
- Metódus Igazságérték(igaz_atomi_kijelentések: Halmaz[Szöveg]):Logikai -- Adott az igaz_atomi_kijelentések halmaz, amelyben pontosan akkor van benne egy atomi kijelentés, ha az igaz. Ez alapján add meg, hogy a(z összetett) formula igaz-e vagy hamis!
- Metódus NemÉs(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag negáció és konjunkció műveletek szerepelnek.
- Metódus NemVagy(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag negáció és diszjunkció műveletek szerepelnek.
- Metódus NemAkkor(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag negáció és kondicionális műveletek szerepelnek.
- Metódus FalsAkkor(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag kondicionális művelet szerepel és a falsum (⊥) atomi kijelentés, amely mindig azonosan hamis.
- Metódus SemSem(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag a sem-sem művelet (A↓B ⇔ ¬A∧¬B) fordul elő.
- Metódus Sheffer(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag a Sheffer-művelet (A↑B ⇔ ¬(A∧B)) fordul elő.
Úgy írd meg a programod, hogy mutassa be ezeket a metódusokat a felhasználónak!