• Nem Talált Eredményt

fejezet - Ciklusokhoz kapcsolódó feladatok (szerző: Király Roland)

4.1. feladat (Több elem bekérése – szint: 1). Írjunk olyan programot, amely addig kér be egész számokat a billentyűzetről, amíg azok összege meg nem haladja a 100-at. A beolvasás végén írjuk ki azt, hogy a bekért számok közül hány volt páros, és hány volt páratlan.

A 4.1 forrásszövegben találjuk a megoldást, a program kimenetét pedig a 4.1 ábrán láthatjuk.

4.1. ábra. A tömb bekérése

4.2. feladat (Mátrix bekérése – szint: 2). Kérjük be egy 2x2-es (esetleg egy 3x3-as) mátrix elemeit, majd „rajzoljuk” ki a mátrixot a konzol képernyőre, végül számítsuk ki és írjuk ki a determinánsát.

Magyarázat: Determinánson egy négyzetes mátrixhoz rendelt számot értünk. Ha egy A nxn-es négyzetes mátrix elemei az számok, akkor az (n-ed rendű) determináns a Leibniz-formula segítségével kapható meg.

A 4.2 forrásszövegben találjuk a megoldást, a számítás menetét az alábbiakban láthatjuk.

4.3. feladat (Négyszögek – szint: 1). Gyakoroljunk a konzollal. Készítsünk programot, amely képernyő közepére a bal széltől a jobb szélig tartó négyszöget rajzol. A 4.3 forrásszövegben találjuk a megoldást.

4.4. feladat (Számláló és nevező – szint: 1). Készítsünk programot, mely egy tört számlálójának és nevezőjének megadása után kiírja az egyszerűsített törtet. A 4.4 forrásszövegben találjuk meg a feladat megoldását.

4.5. feladat (Egerek – szint: 3). Tételezzük fel, hogy létezik teljesen szeparált, L egység hosszúságú csatorna, és mindkét végénél egy-egy egér. Egy indító jelre az egyik egér U, a másik V sebességgel kezd rohanni a csatorna ellenkező vége felé. Amikor odaérnek, visszafordulnak és újra egymással szemben haladnak (faltól falig rohangálnak). Három módon találkozhatnak, néha szemből, néha a gyorsabb utoléri a lassabbat, néha pedig egyszerre érnek egy falhoz…

Készítsünk olyan programot, ami bekéri egy képzeletbeli szennyvízcsatorna hosszát (L), két patkány sebességét (U és V), valamint egy időtartamot (T), majd kiírja, hogy a megadott időtartam alatt a patkányok hányszor találkoztak.

4.6. feladat (Karakterek bekérése – szint: 1). Írjunk programot, mely bekér 5 különböző karaktert, majd kiírja ezen karakterek összes permutációját. A program egy lehetséges megoldását a 4.6 forrásszövegben találjuk.

4.7. feladat (Összegek kiszámítása – szint: 1). Készítsünk alkalmazást a 4.7 forrásszövegben látható program mintájára, amely bekéri a K pozitív egész számot, majd kiszámolja a következő összeget:

4.8. feladat (Háromszög kirajzolása – szint: 1). A 4.8 programszöveg mintájára kérjünk be egy természetes számot (a), majd rajzoljunk ki a képernyőre egy derékszögű háromszöget csillagokból (*). A háromszög pontosan az -val megegyező sornyi csillagból álljon.

4.9. feladat (Betűk rajzolása a képernyőre – szint: 1). Készítsünk programot, amely bekér egy N természetes számot, majd kirajzol a képernyőre egymás mellé N-szer az "XO" betűket.

A feladat egy lehetséges megoldását a 4.9 programban találjuk meg.

4.10. feladat (Unalmas az informatika óra – szint: 1). Írjon programot, ami megkérdezi a felhasználótól, hogy hány másodperc „zenét” szeretne hallgatni. A megadott másodpercen keresztül szólaltassunk meg véletlen frekvenciájú hangokat, véletlen(1 és 600 ms között) ideig.

4.11. feladat (Betűkígyó – szint: 2). Oldja meg a 4.11 forrásszövegben látható program mintájára a következő feladatot. Piros színű konzol ablakban a képernyő bal szélétől kezdve kirajzolunk egy betűkígyót, ami folyamatosan növekszik (A-K-ig). Ha a billentyűzeten lenyomunk egy betűt, akkor a választottal megegyező betűk kikerülnek a kígyóból...

4.12. feladat (Tízes számrendszer – szint: 2). Készítsünk konzol programot, amely bekér (esetleg véletlenszerűen generál) egy bitsorozatot (2-es számrendszerbeli számot), majd átváltja 10-es számrendszerbebe. A feladat egyszerű megoldását megtaláljuk a 4.12 forrásszövegben.

Magyarázat: A véletlen számok generálásához használjuk a Random osztályt úgy, hogy paraméterezzük a Next metódusát. A paraméterezésre azért van szükség, hogy csak 0-1 számjegyeket generáljon.

4.13. feladat (C# logó – szint: 1). A 4.13 program mintájára rajzoljuk ki a képernyőre valamely általunk választott karakter felhasználásával a C# nyelv logóját.

Magyarázat: A megoldáshoz a karakteres képernyőn jól kell tudni pozicionálni, és érdemes a rendelkezésre álló helyet arányosan elosztani, hogy a logo megfelelően nézzen ki. A pozíciók megadásához használjuk a Console.SetCursorPosition metódust.

4.14. feladat (Csoportosítási feladat – szint: 2). A 4.14 főprogram mintájára készítsünk konzolos alkalmazást, amely beolvassa egy adott osztály névsorát. Alkossunk az osztályból véletlenszerűen csoportokat. A program kérdezze meg a használóját, hogy hány fős csoportokat szeretne létrehozni, majd írja ki azokat a képernyőre.

Magyarázat: Ahhoz, hogy csoportokat tudjunk készíteni, szükség lesz a tanulók neveinek és sorszámainak a tárolására. A programnak létezik egy kevésbé bonyolult megoldása is, ahol a csoportokban a nevek helyett az egyes tanulókat a sorszámuk jelöli. ennél a megoldásnál a beolvasást is lerövidíthetjük.

4.15. feladat (Monogramok – szint: 1). Kérjünk be egy nevet, majd írjuk ki a névhez tartozó monogramot.

Magyarázat: A 4.15 szövegben látható feladat megoldásánál problémába ütközhetünk, ha az adott személy kereszt, vagy családi neve kettős vagy több jelből álló betűket tartalmaz. Ilyenek betűk a CS, DZ, SZ, ZS, … A probléma megoldásához, vagyis a nem egy karakterből álló betűk kiszűrésére építsünk elágazást a programba (switch).

4.16. feladat (Számjegyek összege – szint: 1). Készítsünk a 4.16 program mintájára konzolos alkalmazást, amely beolvas egy számot, majd kiírja a számjegyek összegét a képernyőre.

Magyarázat: A beolvasott számot ne konvertáljuk számmá, ahogy azt a számításokat végző programok esetén tenni szoktuk, hanem hagyjuk meg string formában, mivel így könnyedén szét tudjuk szedni elemeire, vagyis a számjegyeire, melyeket azután át tudunk konvertálni számmá az összeadáshoz. Az konverzióhoz használjuk a int.Parse() metódust az adott string elemre (szam[i].ToString()). Figyelem! A string elemeit is konvertálnunk kell, mivel azok karakter típusúak.

4.17. feladat (Pénzérme feldobása – szint: 1). Készítsünk a 4.17 feladathoz hasonló programot, amely egy képzeletbeli pénzérmét dobál a levegőbe, majd megállapítja, hogy az a fej, vagy az írás oldalára esett-e le. A pénzérme feldobását követően a program írja ki a képernyőre az eredményt, vagyis, hogy hányszor volt fej, és hányszor írás. Természetesen a pénzérme dobások számát is a felhasználó adja meg a program elején.

4.18. feladat (Kukac – szint: 3). Készítsünk a 4.18 forrásszöveg alapján programot, melyben egy kukacot (@) a kurzor mozgató billentyűk segítségével mozgathatuk a képernyőn addig, amíg az ESC billentyűvel ki nem lépünk a programból.

Magyarázat: Amennyiben jól használható programot szeretnénk készíteni, figyelhetünk a képernyő szélének az elérésére, vagyis arra, hogy a kukac ne tudjon kilépni a megadott koordináták közül.

A legjobb megoldás az, ha a kukac eleje a szélek elérésekor az ellentétes oldalon bukkan ki, a háta pedig követi.

Ezzel a megoldással egy un.: két dimenziós Missner-teret hozunk létre amely ugyanilyen alapokon nyugszik.

Nagyon leegyszerűsítve, és kissé elbagatelizálva a dolgot úgy is mondhatnánk, hogy „elől ki, hátul be” típusú teret készítettünk…

4.19. feladat (Napszakok és órák – szint: 1). Készítsünk a 4.19 példához hasonló programot, amely az elindítása után a napszaknak megfelelően köszön!

4.20. feladat (Kamatszámítás – szint: 3). Írjunk konzolos alkalmazást, amely bekéri azt, hogy hány évre, és mekkora összeget szeretnénk egy képzeletbeli bankban lekötni. Ezután a program olvassa be azt is, hogy mennyi a lekötés kamata, majd számítsa ki, hogy a megadott év elteltével mennyi pénzt kaphatunk a betéteink után!

4.21. feladat (Futó sebessége – szint: 2). Készítsünk programot, amely az alábbi számításokat valósítja meg. Egy százméteres futás résztvevője a táv feléig egyenletesen gyorsul, majd az utolsó tíz méteren egyenletesen lassul.

A program kérje be a futó kezdő sebességét (m/s) egy adott intervallumon belül (3.00 - 5.00), és írja ki tíz méterenként a futó aktuális sebességét km/h-ban!

4.22. feladat (Számok sorozata – szint: 2). Írjunk konzolos alkalmazást a 4.22 példaprogram alapján, amely bekér egy egész számot, majd mindaddig kér be további egész számokat, amíg nullát nem kap. A program határozza meg és írja ki a megadott egész számok közül a legnagyobbat.

4.23. feladat (Öttel osztható – szint: 1). Írjon programot a 4.23 példaprogram felhasználásával, mely beolvassa a billentyűzetről egy intervallum kezdő és végértéket, majd kiírja a képernyőre az intervallumba eső egész számok közül azokat, melyek 5-tel oszthatók!

1. A fejezet forráskódjai

4.1. forráskód. Tömb bekérése

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

int y = b;

Console.Write("Add meg a k pozítiv számot:");

int k = Convert.ToInt32(Console.ReadLine());

for (int i = 1; i <= k; i++) {

s = s + i * (i + 1);

}

Console.WriteLine("Osszeg: {0}",s);

Console.ReadLine();

Console.Write("Add meg hányszor ismételjem:");

int n = int.Parse(Console.ReadLine());

string s = "";

(Convert.ToInt32(’A’), Convert.ToInt32(’K’) + 1));

class feladat

Console.WriteLine("Véletlenszerű csoport kialakítása...");

Console.WriteLine("Osztály létszáma!");

int letszam = int.Parse(Console.ReadLine());

Console.WriteLine("Max létszám:");

int csop=int.Parse(Console.ReadLine());

bool[] osztaly=new bool[letszam];

Random rnd = new Random();

int db = 0;

}

}

using System.Text;

namespace feladat {

class Program {

static void Main(string[] args) {

DateTime ido = DateTime.Now;

Console.WriteLine("Jelenlegi ido: {0}:{1}.", ido.Hour, ido.Minute);

if (ido.Hour > 5 && ido.Hour < 9){

Console.WriteLine("Jo reggelt!");

}

else if (ido.Hour > 8 && ido.Hour < 19){

Console.WriteLine("Jo napot!");

} else{

Console.WriteLine("Jo ejszakat!");

}

Console.ReadLine();

} } }

4.18. forráskód. Sorozat maximum eleme

namespace cl {

class Program {

static void Main(string[] args) {

Console.WriteLine("Kérem a számokat!");

int n=-1, max = 0;

while (n != 0) {

n = Convert.ToInt32(Console.ReadLine());

if (n > max) max = n;

}

Console.WriteLine("A legnagyobb szám: {0}" ,max );

Console.ReadLine();

} } }

5. fejezet - Számok és sorozatok