Kezdőoldal » Számítástechnika » Programozás » C# viszonylag egyszerű feladat...

C# viszonylag egyszerű feladat. Mégis hibát ír!?

Figyelt kérdés

static void Main(string[] args)

{

Console.WriteLine("Add meg a dobások számát!");

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

int[] kocka = new int[n];

int i;

bool van;

Console.WriteLine("A dobások a következők: ");

Random rnd = new Random();

for (i = 0; i < n; i++)

{

kocka[i] = rnd.Next(1, 7);

Console.Write("{0}, ",kocka[i]);

}

Console.WriteLine();

i = 0;

while ((kocka[i] != 6) && (i<n))

{

i++;

}

van = (i < n);

if (van)

{

Console.WriteLine("Dobtunk 6-ost.");

}

else

{

Console.WriteLine("Nem dobtunk 6-ost.");

}

Console.ReadLine();

}


Erről a kódról volna szó.

A lényeg, hogy hibát dob ki, ha "nem dobok" hatost.


A következő hibaüzenetet kapom: "Az index a tömb határain kívülre mutatott."


Nem értem miért..


2017. jan. 29. 18:56
 1/7 anonim ***** válasza:
if van...
2017. jan. 29. 19:08
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
illetve oké, h it használsz minden for ciklusnál, de nem áttekinthető.
2017. jan. 29. 19:09
Hasznos számodra ez a válasz?
 3/7 Steve G. Paul ***** válasza:

A while a ciklus elejen tesztel, viszont a ciklusban megnoveled az I-t. Igy ha nincs talalat akkor a kocka tombben egyel a legfelso index fole hivatkozol.

Valtoztasd hatul tesztelere es jo lesz.

2017. jan. 29. 19:20
Hasznos számodra ez a válasz?
 4/7 Adam23713 ***** válasza:

Helló!


Nem while ((kocka[i] != 6) && (i<n)) hanem

while ( (i<n) && (kocka[i] != 6)) Ez ugyan úgy vonatkozik a do...while szerkezetre is. A while ciklusban az i eléri a 7-et és amikor a while vizsgálja hogy kocka[7]!=6... elszál. Ezért vizsgáld először a i<n -et és ez ha nem teljesül akkor rövidre zár és a kocka[i]!=6 -ot már nem fogja vizsgálni.

2017. jan. 29. 19:26
Hasznos számodra ez a válasz?
 5/7 Adam23713 ***** válasza:
Javítás. Valamiért azt feltételeztem hogy a kocka tömböd 6 elemű. :)
2017. jan. 29. 19:29
Hasznos számodra ez a válasz?
 6/7 Adam23713 ***** válasza:
Egy másik lehetőség még: while ((kocka[i] != 6) && (i<n-1))
2017. jan. 29. 19:32
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

Köszönöm a válaszokat!


( (i<n) && (kocka[i] != 6)) volt a helyes. :)

2017. jan. 29. 19:52

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!