Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 316. feladat (2013. március)

I. 316. 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.

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ó.

(10 pont)

A beküldési határidő 2013. április 10-én LEJÁRT.


A logikai kifejezések kezelését váró program meglepően nehéznek bizonyult.

A legtöbb beküldő nem nézett utána, hogy a logikai kifejezések kiértékelése hogyan történik. A logikai műveletek prioritása a következő sorrendben növekszik: ekvivalencia, implikáció, vagy, és, tagadás. Az azonos prioritású műveleteket balról jobbra haladva kell feldolgozni.

Az értékelésnél az alábbi tesztfájlt használtuk: teszt316.zip

A dokumentáció tartalmi része; az előírásoknak megfelelően működő program; az 1-6 esetből legalább kettő helyes; az 1-6 esetből legalább mind helyes; a 7-12 esetből legalább kettő helyes; a 7-12 esetből legalább mind helyes; a többi teszteset 1-1 pontot ért.

Versenyzői észrevétel érkezett, hogy a bemeneti fájlokban az első sor végén található sorvégjel miatt ad hibás eredményt a programja. (A feladatban "első és egyetlen sor" megfogalmazás szerepelt.) Ezért a megoldásokat a sorvégjel nélküli tesztesetekkel teszt316b.zip is megvizsgáltuk, mivel a megoldás tartalmilag ilyekor is lehet helyes.

Az eredmények ennek megfelelően módosultak.

Az összes tesztesetre csak Fényes Balázs programja adott helyes választ: i316fenyes.cs


Statisztika:

7 dolgozat érkezett.
9 pontot kapott:Fényes Balázs.
7 pontot kapott:2 versenyző.
3 pontot kapott:2 versenyző.
2 pontot kapott:1 versenyző.
1 pontot kapott:1 versenyző.

A KöMaL 2013. márciusi informatika feladatai