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();
} } }