A programozás alapjai I. - 2. kisZh

A VIK Wikiből


Ezen az oldalon gyűjtjük a A programozás alapjai I. tárgy gyakorlatain az elmúlt években előforduló kisZh feladatokat, azok megoldásaival. A feladatok nehézsége iránymutatónak tekinthető, de az egyes félévek időbeosztása eltérhet. Ne ess kétségbe, ha ismeretlen, nehéz, „megoldhatatlan” feladatsort látsz.


A megoldásokról

Szóval hogyan kell tanulni a prog ZH-kra? „Sehogyan.” Ez nem egy „tanulható”, hanem egy „gyakorolható” tárgy.

– Czirkos Zoltán, InfoC tanácsok


Az oldalon nem gyűjtjük a feladatok megoldásait. A kisZh-k eleji beugrók rövidek, általában 10 – 15 sorban megoldhatóak. A programozás nem egy „magolható” tárgy, nincsenek típusfeladatok, s azok megoldásai. A programozás alapjai I., s A programozás alapjai II. tárgyak egy szemléletmódot szeretnének megtanítani, amit a régebbi feladatsorok böngészésével nem, csak azok önálló megoldásával lehet elsajátítani. Kicsit bővebben olvashatsz erről az idézet végén linkelt oldalon.

Amennyiben egy-egy itt látható feladat nehézséget okoz, böngészd át az eddigi előadások anyagát. Ha még mindig nem megy a megoldás, fordulj bátran a felsőbb évesekhez, s a tárgy oktatóihoz, gyakorlatvezetőihez a levlistákon, készséggel fognak segíteni.

További tanulási tippekért olvasd el a tárgy adatlapjának Tippek fejezetét.

Feladatsorok

2015

A 2015-ös kisZh feladatok megegyeztek a 2014-es kisZh feladatokkal.

2014

Mátrix 1.

A SCH mátrix 208 ablaka összesen 832 külön kivilágítható pontot, pixelt tartalmaz. Ezeknek hatalmas fényerőt kell produkálniuk, ezért élettartamuk véges. A szervezők a filmek lejátszása után arra kíváncsiak, melyek azok a pixelek, amelyeket az átlagnál nagyobb terhelés érte.

A C programod bemenetként a felvillanó pixelek sorszámait kapja, ahol a legelső pixel a 0. számú. Ezek össze-vissza vannak, és egy pixel többször is felvillanhat. A bemenet végét egy negatív szám jelzi. Ha ezt megkapta, írja ki a képernyőre azon pixelek sorszámait, amelyek többször villantak fel, mint amennyiszer az összes pixel átlagosan (beleértve azokat is, amelyek egyáltalán nem)! A program ne végezzen felesleges műveletet!

A bemenet formátuma:

5 3 9 2 4 6 7 8 0 9 4 2 5 45 87 830 831 2 4 5 ...még sok szám... -1

A kimenet formátuma:

4. pixel, 37 felvillanás
9. pixel, 39 felvillanás

Mátrix 2.

A SCH mátrix 208 ablaka összesen 832 külön kivilágítható pontot, pixelt tartalmaz. Ezeknek hatalmas fényerőt kell produkálniuk, ezért élettartamuk véges. A szervezők a filmek lejátszása után arra kíváncsiak, melyik az a pontosan egy pixel, amelyiknek a legtöbbet kellett világítania.

A C programod bemenetként a felvillanó pixelek sorszámait kapja, és mellettük a felvillanás hosszát másodpercben. A legelső pixel az 1. számú. A sorszámok össze-vissza érkeznek, egy pixel többször is szerepelhet. A bemenet végét a 0 0 jelzi. Ha ezt megkapta a program, írja ki a képernyőre annak a pixelnek a számát, amely a legtöbbet világított, és azt is, hogy ez hány másodperc! A program ne végezzen felesleges műveletet!

A bemenet formátuma:

3 1.2
4 0.7
3 2.9
5 0.4
6 0.2
3 6.9
0 0

A kimenet formátuma:

Legtöbbet világító: 3. pixel, 11.000000 sec

Bubik 1.

„Péntek éjjel eltűnt az összes Bubi bringa a városból.” SCH QPA feladat keretében kellett ezeket a versenyzőknek a koli elé vinniük. A szervezők kíváncsiak arra, hogy melyik csapat tudott a legtöbb bubival odatekerni a koli elé.

Az adatok kiértékeléséhez egy programot kell írnod. A program bemenetén számpárokat kap (csapat sorszáma 1-től 95-ig, hozott bringák száma). A bemenet végét a -1 -1 számpár jelöli. A beérkező biciklik csapatonként össze-vissza sorrendben lesznek; egy csapat akár többször is hozhat biciklit.

19  3
4  2
18  4
19  5
-1  -1

A kimenet annak a csapatnak a sorszáma és hozott bringáinak száma kell legyen, amelyik a versenyszámot a legtöbb bubival megnyeri:

19. csapat, 8 bicikli

Bubik 2.

„Péntek éjjel eltűnt az összes Bubi bringa a városból.” SCH QPA feladat keretében kellett ezeket a versenyzőknek a koli elé vinniük. A szervezők kíváncsiak arra, hogy melyik csapat, hány %-át hozta az összes odahordott biciklinek.

Az adatok kiértékeléséhez egy programot kell írnod. A program bemenetén számpárokat kap (csapat sorszáma 1-től 95-ig, hozott bringák száma). A bemenet végét a 0 0 számpár jelöli. A beérkező biciklik csapatonként össze-vissza sorrendben lesznek; egy csapat akár többször is hozhat biciklit.

19  3
4  2
18  4
19  5
0  0

A kimenet első sora az összes biciklik száma, majd egy lista csapatonként a %-okkal. Amelyik csapat nem hozott bringát, az ne szerepeljen a kimenetben!

Összesen 14 bicikli.
4. csapat, 14.285714%
18. csapat, 28.571429%
19. csapat, 57.142857%