C# viszonylag egyszerű feladat. Mégis hibát ír!?
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..
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.
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.
Köszönöm a válaszokat!
( (i<n) && (kocka[i] != 6)) volt a helyes. :)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!