==== Gondoltam egy számot... ====
Generáljon egy véletlen egész számot 1 és 20 között, majd kérjen be tippeket egész addig, míg a felhasználó el nem találja a gondolt számot!
**Megoldás:**
A véletlen szám generáláshoz a Random
osztály egy példányát használjuk - ez 0-tól a paraméterként megadott szám mínusz egyig terjedő intervallumból ad vissza egy természetes számot.
Az első tippet előre beolvassuk a feltételes ciklus előtt, majd a további tippeket a ciklus magban kérjük be:
class Program
{
static void Main(string[] args)
{
Random rand = new Random();
int num = rand.Next(10)+1;
Console.WriteLine("Gondoltam egy 1 és 10 közötti számot!\nTaláld ki!");
int be = Convert.ToInt32(Console.ReadLine());
while (num != be)
{
Console.WriteLine("Nem talált!\nA gondolt szám nem {0}!\nTippelj újra!", be);
be = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Nyert!\nA gondolt szám {0}!", num);
Console.ReadKey();
}
}
Az előreolvasás helyett a beolvasást a ciklusfeltételbe is elhelyezhetjük:
...
Console.WriteLine("Gondoltam egy 1 és 10 közötti számot!\nTaláld ki!");
int be;
while (num != (be = Convert.ToInt32(Console.ReadLine())))
{
Console.WriteLine("Nem talált!\nA gondolt szám nem {0}!\nTippelj újra!", be);
}
...
Ilyen esetben az értékadás is, mint a függvények, metódusok visszatérési értékkel rendelkezik, visszaadott értéke a baloldali változó értékadás utáni értékével egyezik meg.
==== Menekülő út… ====
Az előző feladatot egészítse ki úgy, hogy ha a felhasználó 0 értéket ad meg, akkor kilépjünk a programból! A választható számok körét növeljük meg 100-ra!
**Megoldás:**
Az előző kódot két ponton kell módosítanunk. Egyrészt a ciklus feltételt kell kiegészítenünk úgy, hogy //be//=0 esetén kilépjen, másrészt a ciklus utáni kiírást kell elágazásba helyezni, hisz most már nem csak úgy léphet ki a program a ciklusból, hogy a felhasználó eltalálta a gondolt számot.
static void Main(string[] args)
{
Random r = new Random();
int num = r.Next(100)+1;
Console.WriteLine("Gondoltam egy 1 és 100 közötti számot!\nTaláld ki!\n(Kilépés: 0)");
int be = Convert.ToInt32(Console.ReadLine());
while (num != be && be != 0)
{
Console.WriteLine("Nem talált!\nA gondolt szám nem {0}!", be);
be = Convert.ToInt32(Console.ReadLine());
}
if (be != 0)
{
Console.WriteLine("Nyert!\nA gondolt szám valóban {0}!", num);
}
else
{
Console.WriteLine("Sajnálom, hogy feladta...");
}
Console.ReadKey();
}
}
==== Kisebb-nagyobb ====
A számkitalálást segítse azzal, hogy minden tipp esetén visszajelzi, hogy a megadott számnál kisebb, vagy nagyobb a „gondolt” szám!
**Megoldás:**
Az eddigi kód ciklusmagját kell módosítanunk: ha nem találta el a felhasználó a gondolt számot, akkor egy elágazásban kell tájékoztatnunk arról, hogy alá- vagy fölé becsülte-e a számot.
class Program
{
static void Main(string[] args)
{
Random r = new Random();
int num = r.Next(100)+1;
Console.WriteLine("Gondoltam egy 1 és 100 közötti számot!\nTaláld ki!\n(Kilépés: 0)");
int be = Convert.ToInt32(Console.ReadLine());
while (num != be && be != 0)
{
if (be < num)
{
Console.WriteLine("Nem talált!\nA gondolt szám nagyobb mint {0}!", be);
}
else
{
Console.WriteLine("Nem talált!\nA gondolt szám kisebb mint {0}!", be);
}
be = Convert.ToInt32(Console.ReadLine());
}
if (be != 0)
{
Console.WriteLine("Nyert!\nA gondolt szám valóban {0}!", num);
}
else
{
Console.WriteLine("Satnya. Feladta...");
}
Console.ReadKey();
}
}
==== Évszám ====
Kérjen be egy évszámot! A bekérést mindaddig ismételje, amíg a felhasználó nem ad meg érvényes XX-XXI. századi évszámot!
**Megoldás:**
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Adjon meg egy XX-XXI. századi évszámot!");
int ev = Convert.ToInt32(Console.ReadLine());
while (ev < 1900 || ev > 2099)
{
Console.WriteLine("Helytelen évszám: {0}! XX-XXI. századi évszám legyen!", ev);
ev = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Köszönöm! A megadott évszám helyes!");
Console.ReadKey();
}
}
==== Dupla-szóköz ====
Kérjen be egy szöveget, majd cserélje benne a dupla szóközöket szimpla szóközre mindaddig, amíg található a szövegben többszörös szóköz!
**Megoldás:**
A String osztály két metódusát használjuk: a Contains() metódus visszaadja, hogy a szövegben szerepel-e a paraméterként átadott szöveg, míg a Replace() metódus az első paraméterként megadott szöveget cseréli ki a második paraméterben megadottra.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Adjon meg egy szöveget (lehet benne többszörös szóköz!");
String txt = Console.ReadLine();
while (txt.Contains(" "))
{
txt = txt.Replace(" "," ");
}
Console.WriteLine("Az átalakított szöveg: {0}", txt);
Console.ReadKey();
}
}