Feladat: I.373 Korcsoport: - Nehézségi fok: -
Füzet: 2015/április, 228 - 229. oldal  PDF  |  MathML 

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.

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 s száma. A következő 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 b száma található, amely legfeljebb 500 lehet. A következő 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.

 
Bemenet:  Kimenet:  4   4A A b 1 c 2 e 4   A A b 1 c 2 e 4   F A b 2   F A b 2   D F a 3 b 2 c 2   D F a 3   C A b 1 c 3 e 5 a 3   C A c 3 e 5 a 3   3   3   A f 4 b 3 d 2   b 3 c 2 d 2 e 4 f 4   C   b 1 c 3 e 5 a 3   D f 2 b 1   a 3 b 1 c 2 e 4 f 2   
 

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