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 S. 47. feladat (2009. október)

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

A kiadott mintabemenetek: minitabla.zip (helyesbítve)

(10 pont)

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


A megoldásokat a következő tesztállományokkal vizsgáltuk: s47teszt.zip

Mintamegoldásként Mokcsay Ádám 12. osztályos Bonyhádi versenyző (s47.zip) és Kovács András szintén 12. osztályos Budaörsi diák (s47csharp.zip) munkáját adjuk közre.


Statisztika:

13 dolgozat érkezett.
10 pontot kapott:Kovács 125 András, Mokcsay 026 Ádám.
9 pontot kapott:Adrián Patrik, Éles András, Weisz Gellért.
8 pontot kapott:2 versenyző.
6 pontot kapott:1 versenyző.
5 pontot kapott:1 versenyző.
4 pontot kapott:1 versenyző.
2 pontot kapott:1 versenyző.
1 pontot kapott:2 versenyző.

A KöMaL 2009. októberi informatika feladatai