Vezérlőpult
C7. Gyakorló feladatok · Vezérlési szerkezetek

C blokk · Vezérlési szerkezetek · 7. tananyag — gyakorló feladatgyűjtemény

Gyakorló feladatok: minden, amit a C blokkban tanultál

Új anyag ma nincs. Helyette 15 életszerű feladat, amelyben a szerkezetválasztás a tét: if vagy switch? for, while vagy do-while? Beágyazás vagy lapítás? A feladatszöveg szándékosan nem árulja el — mint az igazi programozásban.

1 tanóra + otthoni gyakorlás15 feladat⭐ – ⭐⭐⭐ szintek

Ezt gyakorlod

1Hogyan dolgozz a feladatokkal?

  1. Először a szerkezetet tervezd meg, ne a kódot gépeld. Döntés vagy ismétlés? Ismert-e a lépésszám? Kell-e legalább egy kör? Ha ezekre válaszoltál, a kód már majdnem magától megy.
  2. „Hibás bevitelre kérdezz újra” — ahol ezt olvasod, a program ne álljon le és ne is menjen tovább rossz adattal: addig kérdezzen, amíg használható választ nem kap.
  3. Tesztelj minden kódútvonalat — határértékekkel is: pont 100 pont, pont 15 perc, pont 150 kWh. A legtöbb hiba a határokon lakik.
  4. A kimenet is a feladat része: mondatszerű, formázott, színes — a színek jelentenek (zöld = siker, piros = hiba).
  5. Feladatonként új projekt, kész feladat után commit (A7) — beszédes üzenettel.
ℹ️ HA ELAKADSZ

Ne új eszközt keress — minden feladat megoldható az eddig tanultakkal. A kérdés mindig az, melyik eszközt és hogyan kombinálva: ha nem megy, lapozd fel a blokk megfelelő fejezetét, és nézd meg újra a receptjeit.

2Kidolgozott mintafeladat

MINTA⭐⭐Pizzafutár-kassza

Egy pizzafutár-szolgálat kasszaprogramját írod. Kérd be egyesével a rendelt tételek árát — a 0 jelzi a rendelés végét. Hibás bevitelre (nem szám, vagy negatív) a program kérdezzen újra. A végén írasd ki számlaszerűen: hány tétel volt, mennyi a részösszeg, mennyi a kiszállítási díj — 990 Ft, de 8 000 Ft felett ingyenes —, és mennyi a fizetendő végösszeg, színnel kiemelve, ezres tagolással. A díjszabás értékei ne legyenek „magic number”-ök!

A gondolatmenet

  1. Milyen ciklus? Nem tudjuk előre, hány tétel lesz → logikai ciklus (C5). A 0 egy „őrszem-érték”: maga nem tétel, csak a végét jelzi.
  2. Mit gyűjtünk? Részösszeg + darabszám → két akkumulátor a ciklus előtt (C4).
  3. Mi állandó? const decimal SzallitasiDij = 990m; és const decimal IngyenesHatar = 8000m; — pénzhez decimal (B3).
  4. A beolvasás hibatűrő → makacs beolvasás, kiegészítve a „nem negatív” feltétellel.
  5. A kiszállítás díja döntés → if–else (C1); a számlához :N0 (B5) és színek (B8).

Egy lehetséges megoldás

const decimal SzallitasiDij = 990m;
const decimal IngyenesHatar = 8000m;

decimal reszosszeg = 0;
int darab = 0;
decimal ar;

Konzol.Cim("PIZZAFUTÁR KASSZA");
Console.WriteLine("Írd be a tételek árát — 0 zárja a rendelést.");

do
{
    Console.Write($"{darab + 1}. tétel ára: ");
    while (!decimal.TryParse(Console.ReadLine(), out ar) || ar < 0)
    {
        Konzol.Hiba("Nem negatív számot kérek!");
        Console.Write($"{darab + 1}. tétel ára: ");
    }

    if (ar > 0)
    {
        reszosszeg += ar;
        darab++;
    }
}
while (ar != 0);

decimal szallitas = reszosszeg >= IngyenesHatar ? 0 : SzallitasiDij;

Console.WriteLine($"Tételek száma:    {darab}");
Console.WriteLine($"Részösszeg:       {reszosszeg,10:N0} Ft");
Console.WriteLine($"Kiszállítás:      {szallitas,10:N0} Ft");
Console.Write("FIZETENDŐ:        ");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"{reszosszeg + szallitas,10:N0} Ft");
Console.ResetColor();

Egy lehetséges lefutás (a zöld sor a konzolon tényleg zöld):

═══ PIZZAFUTÁR KASSZA ═══
Írd be a tételek árát — 0 zárja a rendelést.
1. tétel ára: 3490
2. tétel ára: 2990
3. tétel ára: háromezer
✘ Nem negatív számot kérek!
3. tétel ára: 3000
4. tétel ára: 0
Tételek száma:    3
Részösszeg:            9 480 Ft
Kiszállítás:               0 Ft
FIZETENDŐ:        9 480 Ft
⚠️ A TE MEGOLDÁSOD LEHET MÁS

A ? : helyett if–else, a do-while helyett másképp szervezett while — mind jó, ha a program helyesen és hibatűrően működik, és a kód olvasható marad.

3Alapfeladatok ⭐

Bemelegítés

Egy-egy jól megválasztott szerkezet — de a határokra és a hibás bevitelre itt is figyelni kell.

C7.1⭐Osztályzat-kalkulátor

Készíts programot, amely bekéri egy dolgozat pontszámát (0–100). Hibás bevitelre — nem szám, vagy a tartományon kívül esik — a program kérdezzen újra, amíg érvényes értéket nem kap. Ezután írasd ki mondatszerűen az osztályzatot az iskolai ponthatárok szerint (0–39: elégtelen, 40–54: elégséges, 55–69: közepes, 70–84: jó, 85-től: jeles). A jegy neve legyen színes: az elégtelen piros, a jeles zöld, a többi sárga.

C7.2⭐Koncert-beléptető

Egy koncert 16 éven felülieknek szól, de szülői kísérettel fiatalabbak is bemehetnek. Kérd be a látogató életkorát; ha nem szám érkezik, kérdezz újra. Ha a látogató fiatalabb 16-nál, kérdezd meg egyetlen billentyűvel (i/n), van-e vele felnőtt kísérő — és ennek megfelelően engedd be (zölddel) vagy utasítsd el (pirossal). A 16 évnél idősebbek kérdés nélkül beléphetnek.

C7.3⭐Hét napja

Kérd be egy nap sorszámát (1–7), és írasd ki a nap nevét, valamint azt, hogy hétköznap vagy hétvége. Érvénytelen sorszámra piros hibaüzenet jár. A hétvégi napok neve jelenjen meg cián színnel.

C7.4⭐Teherlift

Egy teherlift legfeljebb 6 személyt VAGY 450 kg össztömeget bír el — a kettő közül egyik sem léphető túl. Kérd be a beszállni készülők számát és össztömegét, és írasd ki mondatszerűen, elindulhat-e a lift. Ha nem, azt is írd ki (pirossal), melyik korlát sérült — akár mindkettő.

4Haladó feladatok ⭐⭐

Itt már kombinálni kell

Döntés ÉS ismétlés együtt — és mindegyikben van legalább egy pont, ahol gondolkodás nélkül rossz eredmény születik.

C7.5⭐⭐Bumm-játék

A népszerű ügyességi játékban körben számolunk, de akire olyan szám jut, amely osztható 7-tel VAGY 7-re végződik, annak „BUMM!”-ot kell kiáltania. Írj programot, amely 1-től 100-ig kiírja a számokat, de a „bummos” számok helyett pirossal a BUMM! szót írja. A végén írd ki, hány BUMM! hangzott el összesen.

C7.6⭐⭐Bankautomata

Egy bankautomata 20 000, 10 000, 5 000, 2 000 és 1 000 Ft-os címleteket ad ki, mindig a lehető legkevesebb bankjeggyel. Kérd be a felvenni kívánt összeget; ha nem szám, vagy nem osztható 1000-rel, kérdezz újra. Ezután írasd ki címletenként, hány bankjegyet ad a gép — de csak azokat a címleteket, amelyekből tényleg ad. A címletek értéke ne legyen elszórva a számításokban „magic number”-ként!

C7.7⭐⭐Hónap napjai

Kérd be az évszámot és a hónap sorszámát (hibás bevitelre kérdezz újra), és írasd ki, hány napos az adott hónap. Ne feledd: a február hossza az évtől is függ — a szökőév-szabályt a C3-ban már megismerted (osztható 4-gyel, kivéve 100, hacsak nem 400). Érvénytelen hónapszámra piros hibaüzenet.

C7.8⭐⭐Mértékegység-átváltó

Készíts visszatérő menüvel működő átváltót, amely kilépésig ismétlődik. Menüpontok: km → mérföld (1 km = 0,621 mérföld), kg → font (1 kg = 2,205 font), °C → °F, kilépés. Minden menüpont kérje be az értéket (hibás bevitelre kérdezzen újra), és az eredményt két tizedessel, színnel kiemelve írja ki. Az átváltási arányok ne legyenek „magic number”-ök!

C7.9⭐⭐Parkolóház

Egy parkolóház díja megkezdett óránként 400 Ft, de az első 15 perc ingyenes. Kérd be az érkezés és a távozás időpontját (óra és perc külön-külön), számold ki a bent töltött időt, és írasd ki mondatszerűen az időtartamot (óra:perc formában) és a fizetendő díjat, színnel kiemelve. Feltételezhetjük, hogy a távozás ugyanaznap, az érkezés után történik.

C7.10⭐⭐Villámkvíz

Készíts háromkérdéses kvízjátékot a C# tananyagból (a kérdéseket te találod ki — legyen köztük szöveges és szám válaszú is). Minden kérdésnél írd ki azonnal színesben, hogy a válasz helyes vagy hibás volt, és a helyes választ is hibázás esetén. A végén írd ki a pontszámot, és értékeld a teljesítményt legalább három sávban (pl. „Profi vagy!”, „Nem rossz…”, „Olvasd újra a fejezeteket!”).

C7.11⭐⭐Edzésnapló

Kérd be, hány edzésed volt a héten (1–7 között, hibás bevitelre kérdezz újra), majd egyesével az egyes edzések távját kilométerben. A végén írasd ki összesítve: az összes megtett távot, az átlagot egy tizedessel, valamint a leghosszabb edzés távját és sorszámát — ez utóbbit zölddel kiemelve.

5Kihívások ⭐⭐⭐

A blokk legszebb feladatai

Teljes kis programok: menü, számla, játék. Ha ezek mennek, a témazáró sem lesz gond.

C7.12⭐⭐⭐Sávos villanyszámla

Egy szolgáltató sávosan számláz: a havi fogyasztás első 150 kWh-ja 40 Ft/kWh, a 151–300 kWh közötti rész 50 Ft/kWh, a 300 kWh feletti rész 70 Ft/kWh. Kérd be a havi fogyasztást, és írasd ki számlaszerűen, sávonként: hány kWh esett az adott sávba és az mennyibe került — végül a teljes összeget színnel kiemelve, ezres tagolással. Ügyelj rá, hogy a program kis fogyasztásra (pl. 80 kWh) csak az első sávot írja ki!

C7.13⭐⭐⭐Fagylaltozó-kassza

Készíts kasszaprogramot egy fagylaltozóba, visszatérő menüvel. A fagylaltozó három ízt árul (pl. vanília 450 Ft, csoki 450 Ft, pisztácia 550 Ft). A menüből lehessen gombócot hozzáadni a rendeléshez (ízenként külön menüpont), kiírni az aktuális rendelést (hány gombóc, mennyi az eddigi összeg), fizetni (számlaszerű összesítés színes végösszeggel, majd üres kosárral folytatódik), és kilépni. Az árak ne legyenek „magic number”-ök!

C7.14⭐⭐⭐Fordított számkitaláló

Most a gép talál! Gondolj egy számra 1 és 100 között. A gép mindig a még lehetséges tartomány középső értékét tippeli, te pedig egyetlen billentyűvel válaszolsz: (k) kisebb a gondolt szám, (n) nagyobb, (t) talált. A gép a válaszod alapján szűkíti a tartományt, és újra tippel — találat esetén kiírja zölddel, hány tippből sikerült. Minden más billentyűre írjon hibaüzenetet, és várjon érvényes választ. (Ha jól dolgozik a gép, 7 tippnél többre sosem lesz szüksége — ellenőrizd!)

C7.15⭐⭐⭐Számjegy-nyomozó

Kérj be egy pozitív egész számot (hibás bevitelre kérdezz újra). A program írja ki: hány számjegyből áll a szám, mennyi a számjegyeinek összege, és írja ki a számot fordított számjegy-sorrendben is (pl. 2026 → 6202). A számot közben tilos szöveggé alakítani — a megoldást számokkal, műveletekkel kell felépíteni!

6Zárás — mielőtt továbblépsz

  1. Minden megoldásnál nézz rá még egyszer: jó szerkezetet választottál? Nem lett túl mély a beágyazás? Nincs magic number?
  2. A határokon teszteld: pont 16 év, pont 15 perc, pont 150 kWh, pont 1000 Ft — a hibák a határokon laknak.
  3. Minden kész feladat után commit — beszédes üzenettel (pl. C7.13 Fagylaltozo kesz).
  4. Ha egy feladat nem ment, az térkép a témazáróhoz: pontosan megmutatja, melyik fejezetet nézd át újra.
  5. A D blokkban ezek a programok új szintre lépnek: a metódusokkal az ismétlődő részek (makacs beolvasás, keretrajzolás) végre egyszer megírt, újrahasznosítható eszközzé válnak.