Mi lehet a baja a c# alprogimnak?
Egy kis alprogit akarok irni c#-ba. Generaljon a gep egy random szamot, en meg leellenorzom, es ha van benne szamjegy ismetlodes akkor generaljon egy ujatt, mindaddig amig nem lesz egy megfelelo szam. Igy probaltam megirni, de elofordul a szamjegy ismetlodes:
int szam = r.Next(1023, 9876);
do
{
for (i = 0; i < 3; i++)
{
t[i] = szam % 10;
szam = szam / 10;
}
for (i = 0; i < 3; i++)
for (j = i + 1; j <= 3; j++)
if (t[i] == t[j]) szam = r.Next(1023, 9876);
else db++;
}while(db!=1);
a kezdetben a db 0
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Szerintem ahelyett, hogy osztással meg modulóval szórakoznál konvertáld át az int szam-ot sztringgé. Most nem jut eszembe, hogy c#-ban ez hogy van, ha nem tudod akkor googlezz rá.
A második és harmadik ciklusokban szerintem tegyél ki explicit zárójeleket a ciklusmag köré, mert így nehéz látni, hogy mi is történik. Elvileg, ha csak egy utasítás van, akkor nem kell, de if-else-nél már necces.
A hiba egyébként szerintem pont ez az if-else. Ha pld i = 0, és j = 1, akkor ha az első és a második számjegy nem egyezik meg akkor növeli db-t. Ekkor a ciklus leáll, pedig még semmit sem tudunk a harmadik és negyedik számjegyekről.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Üdv!
Ahogy én értelmezem ott is hiba van, hogy a második i-s for ciklus nincs zárójelezve. Legalábbis a C megköveteli, hogy zárójelezd a ciklus magot, ha az több mint egy utasításból áll. Ez nem tudom, h a C#-nál is így van-e.
Mert a C szabályai szerint beállítja i-t nullára, majd növeli az értékét amíg i nem lesz három, majd kilép a ciklusból.
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!