C# hogyan csinálnád?
int n = 1;
int a;
int[] X = new int[n];
Random r = new Random();
int i = 0;
do
{
++i;
X[i] = r.Next(0,100);
Console.Write("A szám amire gondoltam: "); a = Convert.ToInt32(Console.ReadLine());
} while (a != X[i]);
Console.ReadKey();
Egészítsük ki az előző feladatot, hogy a megoldás lépésszámát is írja ki!










A program több sebből vérzik.
Első, hogy nem jó:
n=1 esetén az X tömb egy elemű, azaz X[0] létezik csak.
A ciklus első lépése, hogy i-t 1-re állítja, utána megpróbál X[1]-be beírni egy 0-100 közötti véletlen számot, de persze a program egyből el fog hasalni, mert az X tömb indexelése ezt nem engedi meg.
Második hasalás ott van, hogy a ciklus minden körben új véletlen számot dob amit a játékosnak ki kellene találnia.
Ez egyrészt rendkívül nehéz feladat lenne, másrészt a program sehol sem ellenőrzi, hogy az X tömb méretén kívül akar-e címezni a ciklus.
Röviden fogalmaznék: ez a program talán minden szempontból hibás.
Átírni kb. így lehetne:
int próbálkozások_száma = 0;
int tipp;
Random véletlenszám = new Random();
int kitalálni_való_szám = véletlenszám.Next(0, 10);
do
{
próbálkozások_száma++;
Console.Write("Melyik szám amire gondoltam? ");
tipp = Convert.ToInt32(Console.ReadLine());
}
while (tipp != kitalálni_való_szám);
Console.WriteLine("Helyes, a {0} számra gondoltam, ezt {1} tippből találtad ki!", kitalálni_való_szám, próbálkozások_száma);
Console.ReadKey();
Ez a megoldás kb. azt csinálja, amit a feltett kérdésben szereplő programnak *kéne*, de természetesen bőven messze van az ideálistól. Direkt do-while ciklussal írtam, az én választásom másra esett volna.
0-10 közötti számokra írtam át, úgy egyszerűbb a játék.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!