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. 238. feladat (2010. április)

I. 238. A matematikában és a természettudományokban a kifejezések leírásához hagyományosan zárójelezést használunk.

Készítsünk programot i238 néven, amely egy zárójeles kifejezésben megkeresi az első hibás vagy hiányzó karakter pozícióját. A kifejezésben háromféle zárójeltípus, számjegy és operátor lehet. A kifejezés más helyességét most nem ellenőrizzük.

Szabályos zárójelezés:

- ha s sorozat rendesen zárójelezett (s üres is lehet), akkor (s), [s] és {s} is az,

- ha s és p sorozat szabályos, akkor sp is szabályos,

- minden más sorozat szabálytalan.

A program első parancssori argumentuma legyen egy több tesztesetet leíró adatállomány neve. A fájl első sorában \(\displaystyle N\) (\(\displaystyle 1\le N\le 100\)) a tesztesetek száma és az ezt követő \(\displaystyle N\) sorban a tesztesetek állnak, amelyek hossza 1 és 255 közötti.

A parancssor második argumentumaként megadott kimeneti állomány \(\displaystyle N\) sorban egy-egy egész számot, az első hibás vagy hiányzó karakter pozícióját adja.

Például:

Beküldendő egy tömörített i238.zip állományban a program forráskódja (i238.pas, i238.cpp, ...), valamint a program rövid dokumentációja (i238.txt, i238.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ő 2010. május 10-én LEJÁRT.


Megoldásokról

A feladat a megoldóknak könnyűnek számított, ennek ellenére kevés program érkezett.

Szabó Attila (Pécs, Leőwey Klára Gimnázium) 9. osztályos tanuló megoldása alapján

A zárójelezés helyességének definícióját úgy fogalmazom át, hogy minden nyitó zárójelhez egy hozzátartozó záró zárójel tartozik.

Ennek ellenőrzésére egy verem adatszerkezet használok. A karakterverembe minden nyitó zárójelet beteszek. A kifejezés feldolgozása során amikor záró zárójelhez érek, a veremből kivett nyitó zárójelet vizsgálom. Ha a két zárójel összeillik, akkor azok megfelelő zárójelpárt határoznak meg, különben, ha a verem üres, vagy az első hibás karakter az éppen feldolgozott pozíción van és a feldolgozás véget ér.

Ha végigérünk a feldolgozáson (nincs rossz bezáró zárójel), akkor még megnézem a verem tartalmát. Amennyiben a verem üres, minden zárójel bezáródott, így a zárójelezés helyes, a kimenet 0, különben van még be nem zárt zárójel, és így a string aktuális hosszánál eggyel nagyobb pozícióról hiányzik egy karakter. Ennek megfelelően a kimenetnek a string hossza+1-nek kell lennie.

Mintamegoldás: i238.pas

Tesztállomány: zarojel1.be


Statisztika:

5 dolgozat érkezett.
10 pontot kapott:Balla Attila, Pap 999 Dávid, Szabó 928 Attila.
9 pontot kapott:Barta 111 János.
7 pontot kapott:1 versenyző.

A KöMaL 2010. áprilisi informatika feladatai