C blokk · Vezérlési szerkezetek · 7. tananyag — gyakorló feladatgyűjtemény
Ú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.
Konzol osztály
(B9)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.
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!
const decimal SzallitasiDij = 990m; és
const decimal IngyenesHatar = 8000m; —
pénzhez decimal
(B3).:N0
(B5) és
színek (B8).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 ? : 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.
Egy-egy jól megválasztott szerkezet — de a határokra és a hibás bevitelre itt is figyelni kell.
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.
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.
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.
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ő.
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.
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.
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!
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.
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!
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.
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!”).
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.
Teljes kis programok: menü, számla, játék. Ha ezek mennek, a témazáró sem lesz gond.
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!
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!
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!)
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!
C7.13 Fagylaltozo kesz).