Az S. 39. feladat (2008. november) |
S. 39. Készítsünk számológépet, mely képes összetett számtani kifejezések kiértékelésére. A kifejezésekben egész számok, zárójelek és a négy alapművelet jele (+,-,*,/) szerepelhetnek. A műveleti sorrend a szokványos legyen: a szorzás és osztás egyenrangúak, és megelőzik az összeadást és a kivonást, melyek szintén egyenrangúak. Ezen kívül, ha zárójelek másként nem jelölik, a halmozott egyenrangú műveleteket mindig balról jobbra értékeljük ki. Tehát például: e-f-a/b/c*d=(e-f)-(((a/b)/c)*d).
A program a kiértékelendő kifejezéseket fájlból olvassa, és az eredményeket fájlba írja. A bemeneti, illetve a kimeneti fájlok nevei az első, illetve második parancssori argumentumok. A bemenet minden sorában egy-egy kifejezés szerepel. A kimenetben minden kifejezéshez egy-egy sor tartozzon, melyben egyetlen (tört)szám, a kifejezés pontos értéke szerepeljen, legegyszerűbb alakra hozva. Ha a kifejezés kiértékelése közben 0-val osztás történne, akkor a sorba a ,,Nullával osztás.'' szöveg kerüljön.
Feltehetjük, hogy egy sor legfeljebb 250 karakter hosszú, a kifejezések szintaktikailag helyesek, és hogy a számítás során (mindig a legegyszerűbb alakra hozva) minden részeredmény leírható két 16-bites egész szám hányadosaként. Figyeljünk azonban arra, hogy a műveletek elvégzése közben se fordulhasson elő túlcsordulás, szükség esetén használjunk 32 bites számokat!
Beküldendő a program forráskódja (s39.pas, s39.cpp, ...), valamint a program rövid dokumentációja (s39.txt, s39.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ő 2008. december 15-én LEJÁRT.
Statisztika:
24 dolgozat érkezett. 10 pontot kapott: Bodosi Eszter, Fábián András, Mokcsay 026 Ádám, Para Attila, Várnai Péter, Véges Márton. 9 pontot kapott: Fejér 267 László, Lájer Márton, Nagy Róbert, Németh Bence. 8 pontot kapott: 5 versenyző. 7 pontot kapott: 3 versenyző. 6 pontot kapott: 3 versenyző. 5 pontot kapott: 2 versenyző. 3 pontot kapott: 1 versenyző.
A KöMaL 2008. novemberi informatika feladatai