Az I. 301. feladat (2012. október) |
I. 301. A világon sokfelé létezik olyan webhely, amely felhasználóik könyveinek csereberéjét hivatott segíteni. Hazánkban is próbálkoznak ilyennel www.rukkola.hu, de a sikeres működéshez kellően sok felhasználó szükséges. A regisztrálók bejelölhetik, mely könyveket ajánlják fel és mely könyveket igénylik. A weblap segít az igények kielégítésében az ajánlatok alapján.
A honlapunkról letölthető csere.txt állomány az ajánlatok és igények adatait tartalmazza időrendben, soronként egynek-egynek a rögzítésével. A soron belül az egyes értékeket pontosan egy szóköz választja el. Az első érték az adott könyvvel kapcsolatos művelet (A - ajánlat, I - igény), majd a rögzítés napja (a szolgáltatás indulásától számított napok száma, legfeljebb 100) szerepel, aztán a könyv, végül a felhasználó azonosítója (mindkettő legfeljebb 200) látszik. (A könyvazonosító nem egy konkrét példányt jelöl, hanem a tartalmat határozza meg.) A fájlban legfeljebb 2000 adatsor található.
A csere.txt állomány első néhány sora:
A 1 83 1
A 1 63 3
I 1 61 11
I 2 63 8
...
Írjunk programot (i301.pas, i301.cpp, ...) néven, amely megoldja az alábbi feladatokat. Az egyes feladatok megoldása előtt jelenítsünk meg a képernyőn a feladat sorszámát tartalmazó szöveget (például: 4. feladat), a beolvasás előtt pedig a beolvasás tartalmára vonatkozó üzenetet (például: ,,Add meg egy könyv azonosítóját!''). Az ékezet nélküli kiírás is megengedett.
[1.] Olvassuk be és tároljuk el a csere.txt állomány adatait a későbbi feladatok megoldásához szükséges formában.
[2.] Írjuk a képernyőre a fájlban található igénylések és ajánlatok darabszámát.
[3.] Kérjük be egy könyv azonosítóját és írjuk a képernyőre, ki és mikor igényelte először. Ha ezt a könyvet még nem igényelte senki, akkor az ,,Ez a könyv még nem szerepelt igénylésben.'' szöveget írjuk ki.
[4.] Írjuk a legnépszerűbb (legtöbb személy által igényelt) könyv azonosítóját a képernyőre. Ha ,,holtverseny'' alakul ki, mindet jelenítsük meg, egymástól szóközzel elválasztva. Az azonosító mögött zárójelben tüntessük fel az igénylők számát is. Például: 18 (21) 3 (21).
[5.] Azt mondják, hogy az ilyen weblapokon mindenki több könyvet szerepeltet az igénylési listáján, mint amennyit felajánl. Vajon ez tényleg így van? Határozzuk meg a rendelkezésre álló adatok alapján, hogy kik azok, akik legalább annyi könyvet igényelnek, mint amennyit felajánlanak. Jelenítsük meg a képernyőn az ő azonosítójukat egy sorban, egymástól egy-egy szóközzel elválasztva.
[6.] Az igényléseket olyan módon állítják párba az ajánlatokkal, hogy az első igénylőhöz juttatják el az adott könyv első felajánlott példányát. Írjuk a képernyőre annak a könyvnek az azonosítóját, amely először talált új gazdára, valamint azt, hogy hány napot kellett várnia az igénylőnek erre.
[7.] Határozzuk meg a könyvek útját. Rögzítsük a mozgas.txt fájlban soronként az egyes ,,könyvmozgásokat''. A sor első eleme a nap sorszáma legyen, amikor sikerült megtalálni az igénylés párját, azaz amikor egy könyv ajánlata és igénye párba került. A második helyen a könyv azonosítója szerepeljen, aztán a felajánló, majd végül az igénylő sorszáma álljon. A soron belül ezeket az értékeket egy-egy tabulátorral válasszuk el egymástól. A fájlon belül a megjelenítés sorrendje tetszőleges lehet.
Beküldendő a program forráskódja (i301.pas, i301.cpp, ...), valamint a program rövid dokumentációja (i301.txt, i301.pdf, ...), amely megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
Letölthető fájl: csere.txt
(10 pont)
A beküldési határidő 2012. november 12-én LEJÁRT.
Az érettségi feladat megoldása során a beküldők fele nyújtott legalább 90 százalékos teljesítményt.
A pontveszteségek többsége figyelmetlenségből adódott.
A könyvmozgásokat leírását igénylő utolsó feladatba sokaknak beletört a bicskája. Egy lehetséges megoldási módszer ehhez a feladathoz: a bemenet sorait a könyv azonosítója, azon belül a bemenet sorazonosítója szerint rendezzük, majd könyvenként megfelelő számban (az igények és ajánlatok közül a kisebbik) elvégezzük a párba állítást.
Az értékelési útmutató: i301ertekeles.pdf
Jákli Aida Karolina megoldása Visual Basic nyelven: i301.vb
Statisztika:
18 dolgozat érkezett. 10 pontot kapott: Dobos-Kovács Mihály, Jákli Aida Karolina, Qian Lívia, Varga 256 Erik. 9 pontot kapott: Fényes Balázs, Gema Barnabás, Németh 017 András, Tegzes Tamás, Tilk Bence. 8 pontot kapott: 3 versenyző. 7 pontot kapott: 2 versenyző. 6 pontot kapott: 2 versenyző. 3 pontot kapott: 1 versenyző. 2 pontot kapott: 1 versenyző.
A KöMaL 2012. októberi informatika feladatai