Feladat: I.316 Korcsoport: - Nehézségi fok: -
Füzet: 2013/március, 162 - 163. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Egy logikai kifejezés elemi állításait az angol ábécé nagybetűivel jelöljük. A logikai kifejezés leírása során a nem, az és,vagy és az implikáció műveleteket használjuk, amelyeket rendre a !, &, |, > karakterekkel jelöljük. A műveletek végrehajtási sorrendjét zárójelezéssel módosíthatjuk.
Írjunk programot, amely a kifejezés kiértékelésének lépéseit mutatja be a következő módon. Keressük meg az egyik legelőször kiértékelhető részét a kifejezésnek, majd nevezzük el az angol ábécé egy kisbetűjével. Az eredeti kifejezésbe helyettesítsük be ezt a betűt, majd kezdjük elölről. A folyamat végén a kifejezés az angol ábécének csupán egyetlen kisbetűjét fogja tartalmazni.
A bemeneti fájl egyetlen sora tartalmazza a feldolgozandó logikai kifejezést, amely legfeljebb 80 karakter hosszú. A kimeneti fájl sorai a kiértékelés lépéseit mutatják be. Minden sor két részből áll. Az első rész az angol ábécé egy, még nem használt kisbetűjével kezdődik, majd az egyenlőségjelet követően a kifejezés első kiértékelésre kerülő részével folytatódik. Egy szóközt követően a kifejezést írjuk át úgy, hogy abba ‐ a kiértékelésre kerülő rész helyére ‐ a sorbeli kisbetűt írjuk.

 
BemenetKimenet  A&!Ca=!C A&ab=A&a b   (A|B)&(B|C)a=A|B a&(B|C)b=B|C a&bc=a&b c   
 

A program első parancssori argumentuma a bemeneti fájl, a második argumentuma pedig a kimeneti fájl neve legyen.
Beküldendő a program forráskódja (i316.pas, i316.cpp, ...), valamint a program rövid dokumentációja (i316.txt, i316.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.