Hogyan oldanátok meg az alábbi C++ feladatot?
A 2014-es emelt informatika érettségi egyik programozási feladatáról van szó. Egy színház eladott jegyeinek számát korábban összeszámoltuk egy txt fájl segítségével, most egy másik txt fájl alapján kéne megoldani a következő feladatot:
Határozza meg, hogy melyik árkategóriában adták el a legtöbb jegyet! Az eredményt
írassa ki a képernyőre az alábbi formában:
Például:
A legtöbb jegyet a(z) 3. árkategóriában értékesítették.
A txt fájl tartalma:
22222111111111122222
22222111111111122222
22222111111111122222
22222111111111122222
33322211111111222333
33333222211222233333
33333222211222223333
33333222222222233333
44444333322233344444
44444333333333344444
55444443333333444455
55555544444444555555
55555544444444555555
55555544444444555555
55555555555555555555
15 sorból, és 20 oszlopból áll, bocsánat ha GYIK tördelte volna a sorokat. Mindegyik szám egy árkategóriát jelöl. Hogyan oldanátok meg a feladatot?
Tehát ha jól értem össze kell számolni hogy 1-ből, 2-ből 3-ból 4-ből vagy 5-ből van a legtöbb a fájlban?
Egyik megoldás hogy karakterről karakterre beolvasod a fájlt, és attól függően hogy 1, 2, 3, 4 vagy 5, növeld a megfelelő változót (amit 0-ról indítasz), vagy tömb elemet.
Másik megoldás hogy beolvasod egy stringbe az egész fájlt és std::count-tal megszámlálod az 1, 2, 3, 4 és 5 előfordulásának számát.
Ezek után egy maximumkiválasztással megmondod hogy melyikből van a legtöbb.
#2 A második alternatíváddal csak az a probléma, hogy
1. Nem hatékony
2. Egy érettségi feladatnál nem a beépített függvények hívogatása a lényeg.
@#3
1. Egy érettségi feladatnál nem a hatékonyság a lényeg,
2. Lehet használni az érettségin beépített függvényeket ezért ismeretük kifejezetten előny.
Ami azt illeti mind a kettő O(n) komplexitású, nagy fájloknál a sebességet a beolvasás sebessége fogja meghatározni egy pufferelt beolvasás _sokkal_ hatékonyabb mint a bájtonkénti beolvasás. Optimalizáljon az aki szeretne, nem erről szól az érettségi. Ugyan ez igaz a függvények használatára is: ha meg van írva akkor ne írd meg újra hanem használd. Vannak feladatok az érettségin amik pontosan erre akarnak rávezetni.
Nem felesleges, elvégre épp az lenne a lényeg, hogy képes-e egyszerű algoritmusokat megírni.
Másrészt meg az O(n) nagyon szépen hangzik, csak hadd ne mondjam, hogy O(n) és O(n) között milliószoros különbségek lehetnek. Jelen esetben 5 db count() hívása, vs egy darab ciklus implementálása, ami on the go összeszámolja mind az 5 jegytípust. Mikor hatékonyságról beszéltem, erre céloztam. És az utóbbit legalább te írod meg, nem egy beépített függvényt hívsz meg 5 alkalommal, ami éppenséggel pont a lényege lenne egy érettségis számonkérésnek. A töri érettséginek sem lenne sok értelme, ha válaszok helyett csak beírod a könyvek címét, ahol megtalálható. Nem attól teszel tanúbizonyságot a a programozási tudásodról, hogy tudsz fejből 3 standard függvényt, és meg tudod őket hívni. A feladatot megoldja, csak épp lópikulát nem igazol.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!