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();
		}
	    }
oktatas/informatika/programozas/dotnet/c-sharp/feladatok_while.txt · Utolsó módosítás: 2019/06/04 14:13 szerkesztette: barnkopf
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0