Jó ez az algoritmus?
Egy gyerekcsoport számol,amíg valaki a 100ast mondja és valajányszor a 7es számjegy megtalálható a számban,tapsolnak.Ha egy számban többször is előfordul a 7es,akkor többször tapsolnak.Írjuk ki hányszor tapsoltak a gyerekek.
Be x
darab<-0
Amív x<=100 végezd el
Ha x%10=7 vagy [x/10]%10=7 akkor
tapsolnak<-igen
darab<-darab+1
különben
tapsolnak<-nem
Ha x=77
tapsolnak<-igen
darab<-darab+2
Ki db,"ennyiszer tapsoltak a gyerekek"
Technikailag felesleges beállítani, hogy tapsolnak - elég, ha csak a darabszámot növeled.
Hogy mikor tapsoltak? Algoritmus 100-nál kisebb, 7-est tartalmazó számokra: (A div az egész osztás!)
Ha (x == 7) vagy ((x div 10) == 7) akkor
{
darab = darab + 1;
Ha (x == 77) akkor darab = darab + 1;
}
Ha lehet 100-nál nagyobb számot is mondani, akkor érdemesebb szövegként kezelni a számot, és ciklussal végigmenni a karaktertömbön, a "7" karaktert keresni.
Tehát ha jól értem, akkor 0-tól 100-ig számolunk és ahányszor egy számban hetes betű van, annyiszor tapsolunk?
A kód egyébként nehezen olvasható, mert az oldal lecsapja a behúzásokat, de ránézésre majdnem jónak tűnik.
Pár megjegyzés:
1. Az x=77 bedrótozása a kódba nem igazán elegáns megoldás.
2. HIBA: Ha x=77, akkor a darab-hoz 3-at fogsz hozzáadni, pedig csak kettőt kellene, hiszen ennyiszer tapsoltak.
Miért? Először is 77%10=7-et ad eredményül, ezért lefut a HA() ág, ott hozzáadsz egyet a darab-hoz. Megy tovább a program, lefut a HA(x=77) is, ahol még kettőt hozzáadsz a darabhoz. Ez összesen három.
3. A tapsolnak<-nem ágat igazából felesleges kiírni, de nem hiba.
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!