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