Feladat: I.301 Korcsoport: - Nehézségi fok: -
Füzet: 2012/október, 422 - 424. 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 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ó.