Kezdőoldal » Számítástechnika » Programozás » Egy if en belül lehet utasítan...

Egy if en belül lehet utasítani a gépet, hogy újból futtassa le az eldöntést? (c#)

Figyelt kérdés

Ha van egy if em zzonyos feltétellel, akkor a lehet olyan utasítást adni, hogy amikro igaz az if akkor meghívja megint ezt az eldöntést?

Pl:

if(10>9)

{

//itt meghívjuk ezt az idet megint(term. ez így k egy végtelen "ciklus" lenne :) )

}

Szal valami rekurzió félét lehet csinálni, egy if-fel?


2011. okt. 31. 21:49
 1/5 _Jessy_ ***** válasza:

hogyne. ezt hívják ciklusnak while, for

while(10>9)

{

}

ez így tényleg végtelen, a feltételbe érdemes olyat írni, ami igaz értéket is felvesz, hacsak nem akarsz végtelen ciklust írni :)

2011. okt. 31. 21:58
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

Szia Jessy én vagyok a aki az tegnap(v tegnap előtt nem tom már) írt oan szééép hosszú whileciklusos bizbaszt :). Az a gond a duplawhileciklussal, hogy az utolsó kártyát anyniszor veszi, ameddig el nem éri a bank a 17 et. Szal van egy 2+3 as lapja alapból az ugye öt húz rá 3 at és akkor e lesz az eredmény:

2+3+(3+3+3+3)=17 :S Nagyon nehezen fedeztem fel ezt a hibát. Ugye neki ienkor új lapot kéne kérnie. Szal 2+3+3+"valami új lap" ameddig el nem éri a 17-et. Sajnos a dupla while ciklus valamiért nem így működik.

Szerinted mi lehet a hiba?


bool bank_tullepte = false;

while(bank_tullepte==false)

{

if (bankpontja < 17)

{

v = veletlentomb[lap];

lapok[lap].Image = elolap.Images[1];

lapok[lap].Location = new Point(hely, 74);

lapnev = elolap.Images.Keys[1];

azonos = false;

x = 0;

lap++;

while (azonos == false)

{

if (lapnev.Contains(lapokneve[x]))

{

ertek = x;

if (x == 12 || x == 25 || x == 38 || x == 51)

{

if (bankpontja + 11 <= 21)

{

bankpontja += 11;

azonos = true;

bankpontjai.Text = "Bank pontja: " + bankpontja;

label1.Text += lapnev;

if (bankpontja >= 17 || bankpontja >= 21)

{

bank_tullepte = true;

}

}

else

{

bankpontja++;

azonos = true;

bankpontjai.Text = "Bank pontja: " + bankpontja;

label1.Text += lapnev;

if (bankpontja >= 17 || bankpontja >= 21)

{

bank_tullepte = true;

}

}

}

else if (x == 8 || x == 9 || x == 10 || x == 11 || x == 21 || x == 22 || x == 23 || x == 24 || x == 34 || x == 35 || x == 36 || x == 37 || x == 47 || x == 48 || x == 49 || x == 50)

{

bankpontja += 10;

azonos = true;

bankpontjai.Text = "Bank pontja: " + bankpontja;

label1.Text += lapnev;

if (bankpontja >= 17 || bankpontja >= 21)

{

bank_tullepte = true;

}

}

else

{

bankpontja += ertek + 2;

azonos = true;

bankpontjai.Text = "Bank pontja: " + bankpontja;

label1.Text += lapnev;

if (bankpontja >= 17 || bankpontja >= 21)

{

bank_tullepte = true;

}

}

}

x++;

}

}

else if (bankpontja >= 17||bankpontja>=21)

{

bank_tullepte = true;

}


}

A lap változót kell növelni, hogy új lapot tegyen le, de próbáltam már mindenhova írni, és nem csinált új lapot. Ezért, gondoltam, hogy a külső while t valahogy elhagyom. (eddigi ötleteim, hogy egy külön metódusba írom meg, de nem tudom, hogy az működik e.(mert ugye ott lehet rekurziót csinálni.)

2011. okt. 31. 22:11
 3/5 _Jessy_ ***** válasza:
ezért mondtam, hogy használj függvényeket. Mondjuk megírod külön függvényben azt, hogy a bank húz egy lapot. Kezdetben ezt meghívod kétszer, utána pedig addig egyesével, amíg a bank túl nem lépi a 17-et
2011. okt. 31. 22:46
Hasznos számodra ez a válasz?
 4/5 _Jessy_ ***** válasza:
Egyébként a while ciklus az nem rekurzió, a kód pedig, amit ide írtál eléggé átláthatalan. Megírtam a saját verziómat az ötleten felbuzdulva :) Állítható a használt paklik száma, akárhány játékost támogat, már csak a lap képe nincs beállítva, és így lett ~300 sor... Szóval ezért érdemes függvényeket írni, meg ilyesmit, és nem kell annyit vacakolni, mint ahogy nálad van. Bocs, hogy ilyen kritikus vagyok, de szerintem ezt a feladatot egyelőre hanyagold, próbálkozz egyszerűbb feladatokkal, hogy megtanuld, mi mire jó, aztán majd ezt a problémát is másként látod majd.
2011. okt. 31. 22:55
Hasznos számodra ez a válasz?
 5/5 anonim válasza:

úristen, ez mi? bocs hogy idepofátlankodok, ÉS IGEN NEM ÉRTEK SEMMIT HOZZÁ, de valaki elmondaná mi az az IF?

(nem, nem megyek el megtanulni:)

2011. nov. 22. 22:06
Hasznos számodra ez a válasz?

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!