C program ciklus sorrend?
int a;
while(a>0){
a=a/10;
db++;
}
return db;
Le tudnátok írni milyen sorrendbe végzi a műveleteket? A függvénnyel és a ciklussal azt szeretném kiszámolni hány számjegyű a szám. Ez a helyes megoldás, de én magamtól a returnhöz db-1et írtam volna, mivel az lenne logikus nekem hogy először megvizsgálom "a" nagyobb mint 0, ha igaz elosztom 10-el, majd megnövelem a db-t. Utolsó esetben a feltétel igaz, de utána megint osztok, és akkor már hamis lenne, de továbbra is hozzá adok +1et, ezért vonnék le a végén 1et. Miért vagy hülye?
Bekéred az a-t.
Megvizsgálja, hogy az a nagyobb-e, mint 0.
Ha nagyobb, akkor elosztja 10-zel az a-t, és db++.
Újra megvizsgálja, hogy nagyobb-e, mint 0.
Ha kisebb, vagy egyenlő, mint 0, akkor nem fogja újra elosztani 10-zel, és megnövelni a db-t, hanem kilép a ciklusból, és visszatér a db-vel, ezért is nem kell levonni belőle -1-et.
Maga a lényegi elgondolás jó, csak a kivitelezés hagy némi kivánnivalót maga után:
1. Először is függvényről beszéltél, de sehol egy függvénydeklaráció.
2. Hiányzik a db deklarálása és inicializációja.
3. A bejövő számot nem lokális változóként kéne deklarálni.
Szóval minimum így:
1234 esetén:
0. Kezdésként: szam = 1234; db = 0;
1. Mivel 1234 > 0, a ciklusmagon belül: szam = 123, db = 1;
2. Mivel 123 > 0, a ciklusmagon belül: szam = 12, db = 2;
3. Mivel 12 > 0, a ciklusmagon belül: szam = 1, db = 3;
4. Mivel 1 > 0, a ciklusmagon belül: szam = 0, db = 4;
5. Mivel 0 == 0, kilépünk a ciklusmagból, a db = 4, ezt adjuk vissza.
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!