Feladat: S.47 Korcsoport: - Nehézségi fok: -
Füzet: 2009/október, 423 - 424. oldal  PDF  |  MathML 
Témakör(ök): Nehezebb feladat

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.

Készítsünk programot, amely egy táblázatkezelő munkalap numerikus értékei és egyszerű képletei alapján kiszámítja a munkalap celláinak értékét. A munkalap 25 oszlopa A-tól Y-ig az angol ABC nagybetűivel van jelölve, 100 sora pedig 1-től 100-ig van sorszámozva. A cellák tartalma olyan kifejezés, amely egész, vagy egyszerű alakban megadott valós számokat, a négy alapművelet jeleit és cellahivatkozásokat foglal magában. A kifejezések hibátlanok, azokban abszolút, relatív és vegyes hivatkozás is előfordul, de sem zárójelezés, sem exponenciális alakban megadott szám nem szerepel.
A program a parancssor első argumentumaként megadott bemeneti állományból beolvassa egy munkalap azon celláinak tartalmát, amelyek értéke nem zérus, a munkalap többi cellája kezdetben nulla értékű. A bemeneti állomány minden sorában egy cella, vagy egy téglalap alakú tartomány összes cellájának megadása szerepel. A parancssor második argumentumaként megadott kimeneti állományba a kiértékelt munkalap celláinak értéke szerepeljen egész számként vagy két tizedes jegyre kerekítve. Az állomány CSV formátumban, soronként, egymástól pontosvesszővel elválasztva tartalmazza a munkalap zérustól eltérő értékű celláit.
A bemeneti állomány kifejezéseinek formája és értelmezése az alábbi példák szerint történik:

 
 

Itt megadtuk két cella egész és valós értékét, és kiszámítottunk ezek alapján egy harmadik cellában a számtani közepüket, majd hozzáadtunk 20-at és még nullát. A kimeneti állomány harmadik sora üres, a negyedik sor első cellája szintén.
 
 

Az A2:A5 tartomány celláiban lévő relatív hivatkozású képlet az aktuális cellával azonos sorban lévő, tőle balra található cella értékéhez ad egyet ‐ tehát a képlet betű szerint a tartomány bal felső sarkában található cellában jelenik meg így. Ez a helyzet a B2:E5 vegyes hivatkozású képlettel is.
 
 

Amennyiben a munkalap körkörös hivatkozást tartalmaz, úgy a #Kör szó kerüljön azokba a cellákba, amelyek értéke így nem kiszámítható. A nullával való osztás hibáját a #NulOszt hibajelzéssel adjuk meg.
Beküldendő egy tömörített állományban (s47.zip) a feladat megoldását tartalmazó forrás és projektállományok (az .exe és más a fordító által generált kiegészítő állományok nélkül), valamint a megoldás menetét bemutató dokumentáció.