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. 373. feladat (2015. április)

I. 373. A szöveg formázásának hatékony módja a stílusok alkalmazása. Használatuk esetén az egyes szövegegységek jellemzőit nem egyenként, hanem a hozzájuk rendelt stílusok segítségével állítjuk be. A legtöbb programban a stílusok nem önállóan létező elemek, hanem fastruktúrába rendezhetők. Egy szövegegység adott tulajdonságát a helyben, egyedileg megadott érték határozza meg. Ha az hiányzik, akkor a hozzárendelt stílusban vagy a struktúrában a felette levő stílusok közül a hozzá legközelebbiben szereplő beállítás a meghatározó.

A feladatban a fentiek leegyszerűsített modelljével dolgozunk: a szövegegységek bekezdések, a tulajdonságaik pozitív egészek. Készítsünk programot i373 néven, amely a stílusok leírását a lehető legtömörebbé alakítja, az egyes szövegrészek tényleges jellemzőit pedig meghatározza.

A bemeneti fájl két részből áll. Az első rész első sora a tárolt stílusok \(\displaystyle s\) száma. A következő \(\displaystyle s\) sor egy-egy stílus leírását tartalmazza. Az első karakter a stílus neve (az angol ábécé nagybetűje), a következő a struktúrában felette lévő stílus neve (a fa csúcsa esetén önmaga), majd a tulajdonság-érték párosok (az angol ábécé kisbetűje-pozitív szám). Az értékeket pontosan egy szóköz választja el. A következő sorban a szöveg bekezdéseinek \(\displaystyle b\) száma található, amely legfeljebb 500 lehet. A következő \(\displaystyle b\) sorban egy-egy bekezdés leírása található. Az első karakter az alkalmazott stílus neve, majd a bekezdésben egyedileg érvényes tulajdonság-érték párosok olvashatók az előző részhez hasonló formában.

A kimeneti fájl szerkezete pontosan egyezik a bemeneti fájl szerkezetével. Az első rész tartalmazza az egyszerűsített stílusokat, ahol azok a tulajdonságok nem jelennek meg, amelyek nem módosítják a struktúrában felettük lévő stílusokban beállított értékeket. A második részben az egyes bekezdésekben ténylegesen érvényre jutó tulajdonságok jelenjenek meg.

A program első parancssori argumentuma a bemeneti fájl neve, a második pedig a kimeneti fájl neve legyen.

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


A feladatban egy egyszerű fagráffal, a stílusok gráfjával kellett dolgozni.

A kimeneti fájl első részének meghatározásánál az aktuális stílustól indulva a gyökér felé kellett lépdelni, majd út közben a saját tulajdonságok közül azokat elhagyni, amelyek legközelebbi előfordulásának értéke egyezik a saját értékkel.

A kimeneti fájl második részében pedig az egyes tulajdonságok első fordulásának értékét kellett bejegyezni.

Az első 6 teszteset 1-1 pontot ér, az utolsó pedig kettőt. Az egyes tesztesetekre a pontszám felét meg lehetett szerezni akkor is, ha a kimenetnek csak az egyik fele volt helyes. i373teszt.zip

A beküldők közül Mócsy Miklós megoldása állította elő a helyes megoldást minden tesztesetre. i373Mocsy.cpp


Statisztika:

9 dolgozat érkezett.
10 pontot kapott:Mócsy Miklós.
7 pontot kapott:1 versenyző.
6 pontot kapott:2 versenyző.
5 pontot kapott:1 versenyző.
4 pontot kapott:1 versenyző.
2 pontot kapott:2 versenyző.
0 pontot kapott:1 versenyző.

A KöMaL 2015. áprilisi informatika feladatai