2006. őszi félév: Információkezelés (IKP-4IK1E)

 

Beadandó feladat (N):

 

Negációt is tartalmazó, rekurzív datalog program kiértékelése

 

 

Feladatleírás:

 

C++ nyelven írjunk egy programot, amely adott típusú datalog programot kiértékel. A programot fordítsuk le MS Windows alatt.

 

A program neve abcdefg EHA kód esetén a következő legyen:

nabcdefg.exe

 

A program MS Windows parancssorból futtatható legyen 2 paraméter, az input és az output fájl nevének megadásával:

nabcdefg input.txt output.txt

 

A programot, és a forráskódo(kat) az ik2006@inf.elte.hu címre kell elküldeni a megadott határidő előtt.

A csatolt állományokat nem kell összetömöríteni. Mindenki egy levelet küldjön, és ahhoz legyen minden csatolva.

A levél subject-je abcdefg EHA kód esetén nabcdefg legyen. A levélbe nem kell semmit írni!

 

A program egy szöveges input fájlból olvassa be a táblákat, és a datalog programot, majd a kiértékelés eredményét a végéhez csatolja. Szintaktikai ellenőrzést nem muszáj végezni, feltehetjük, hogy az input fájl helyes, azaz a datalog program biztonságos, rektifikált, a szabályokban előforduló összes EDB predikátumhoz szerepel egy megfelelő tábla az input fájlban, a rekordok megfelelnek a sémáknak, stb.

 

Például az inputn.txt fájlt beolvasva a programnak az outputn.txt fájlt kell előállítania

 

A könnyebbség és egyértelműség érdekében a megvalósításhoz feltesszük a következőket:

    • A táblákban az oszlopok típusa egész (int) vagy legfeljebb 100 hosszú karakter (char(100)).
    • A karaktersorozatok egyszeres idézőjelek között szerepelnek a táblák soraiban, illetve a beépített predikátumokban, például X=’alma’.
    • A relációnevek, attribútumnevek.char(50) típusúak.
    • Az input relációk mindegyike legfeljebb 50 attribútumot, és legfeljebb 10000 sort tartalmaz.
    • A relációk sorainak komponenseit vesszők választják el egymástól.
    • A kis- és nagybetűket különbözőeknek tekintjük.
    • Az input és output fájlokban a datalog program, a relációk, és az eredmény között 1-1 üres sor szerepel.
    • A datalog program legfeljebb 100 szabályból áll.
    • Minden szabály törzse legfeljebb 30 közönséges és 30 beépített, nem feltétlen különböző predikátumot tartalmazhat, azaz legfeljebb 60 részcélból állhat a szabály törzse.
    • Beépített predikátum nem szerepel fejben.
    • A tagadást NOT prefixszel fejezzük ki, azaz például   NOT.p(X,Y).
    • Az implikáció jele a kisebb jel és egy kötőjel, például p(X)<-r(X,Y).
    • A datalog programról feltesszük, hogy biztonságos, rektifikált, és az azonos fejű szabályok egymás után következnek.
    • A változók nevei nagybetűkből, a predikátumszimbólumok nevei kisbetűkből állnak.
    • Az input fájlban a relációk sorai balról jobbra lexikografikus sorrendben szerepelnek, és egy sor csak egyszer szerepel.
    • Az output fájlban az eredményül kapott relációk sorai is balról jobbra lexikografikus sorrendben szerepeljenek, és egy sor csak egyszer szerepeljen.

 

 

 

 

 

2006. október 10.