Az S. 23. feladat (2007. január) |
S. 23. Egy egyszerű háttértáron található fájlokat és azok egyes darabjainak elhelyezkedését mutatja az alábbi táblázat:
1. idojaras.txt 160 0
2. --- 17 5
3. mese.doc 180 0
4. --- 20 2
5. --- 5 10
6. mese.doc 28 3
7. hoember 128 0
8. mikulas.jpg 560 0
9. hoember 47 7
10. --- 633 0
A táblázat sorai (legföljebb 100000 sor) a háttértár egymást követő különböző méretű részeit jelentik. Minden sorban elsőként a tárolt állomány neve, vagy három kötőjel szerepel (a sorszámokat csak a könnyebb érthetőség miatt írtuk ki, a táblázatban nem szerepelnek).
A fájlnév az angol abc kisbetűit és esetleg egy pontot tartalmaz, a három kötőjel a háttértár szabad területét jelzi. A fájlnév, illetve ,,---'' után szóközzel elválasztva a fájl, vagy szabad rész adott darabjának méretét adja (1 és 100000 közötti egész), valamint egy szóköz után a következő rész helyét a táblázatban (pozitív egész, illetve zérus, ha ez a fájl, vagy szabad rész vége).
Készítsünk programot, amely megadja a fenti szerkezetű háttértár állományait és szabad területét abc sorrendben. A név után szóközzel elválasztva megjeleníti a fájl teljes méretét, valamint megfelelő sorrendben az állomány által elfoglalt területek kezdetét és végét kötőjellel elválasztva. A fenti példa esetén a kimenet:
hoember 175 1099-1145 411-538
idojaras.txt 160 1-160
mese.doc 208 383-410 178-357
mikulas.jpg 560 539-1098
--- szabad 675 358-377 161-177 378-382 1046-1078
A program a be- és kimeneti fájlok nevét a parancssorból olvassa be, használata például S23.exe bemenet.txt kimenet.txt. A bemeneti állomány a fenti példa szerinti szerkezetű (sorszámok nélkül). A programokat több bemeneti állománnyal is teszteljük, teljes pontszámot csak a több tízezer fájl esetén is néhány perc alatt eredményt adó megoldások kaphatnak.
Beküldendő a megoldást tartalmazó program forrásállománya (S23.pas, S23.cpp, ...), valamint a megoldás rövid dokumentációja (S23.txt, S23.pdf, ...).
(10 pont)
A beküldési határidő 2007. február 15-én LEJÁRT.
A megoldások értékelését hat szöveges állománnyal végeztük. Ezeket és a kapott helyes kimenetet az alábbi tömörített állomány tartalmazza: s23beki.zip.
Mintaként Kiss Dániel Miklós budapesti versenyző C++ programját (s23.cpp) és Györök Péter kaposvári versenyző Pascal/Delphi munkáját (s23.dpr) adjuk közre.
Statisztika:
8 dolgozat érkezett. 10 pontot kapott: Csernai Kornél, Györök Péter, Kezes Balázs, Kiss Dániel Miklós, Sztupovszki Szabolcs. 9 pontot kapott: Ócsvári Ádám. 6 pontot kapott: 1 versenyző. 3 pontot kapott: 1 versenyző.
A KöMaL 2007. januári informatika feladatai