ZADACI SA USLOVNIM CIKLUSIMA
Primer 1:
Napisati program koji učitani
broj n transformiše tako što mu uklanja nule sa desne strane (npr. od 130000
pravi 13)
Uslov za izvršavanje ciklusa
je da je broj deljiv sa 10 tj. da ima nulu sa desne strane. U svakom ponavljanju ciklusa eliminišemo po
jednu nulu celobrojnim deljenjem sa 10. Iz ciklusa se izlazi kada ostatak
celobrojnog deljenja više nije nula.
Primer 2:
Napisati program za približno
računanje sume:
Sabirati do člana čija je vrednost manja
od zadate tačnosti (tj. određujemo u stvari na koliko decimala nam treba tačna
suma).
Inače, ova suma je u stvari vrednost
eksponencijalne funkcije o kojoj puno slušamo za vreme ove epidemije virusa
Korona.
Ciklus se izvršava sve dok je tekući član sume veći od
tačnosti tj. dovoljno veliki da utiče
na sumu
Primer
3: Za uneti broj n prebrojati koliko ima cifara
Uneti broj celobrojno delimo
sa 10. Istovremeno sa svakim deljenjem brojač uvećavamo za 1. Ciklus se
izvršava dok ne dobijemo nulu kao rezultat, što je znak da smo došli do
poslednje cifre. Praktično, sa svakim okretanjem ciklusa, tj. sa svakim
deljenjem, odbacujemo po jednu cifru i istovremeno brojač cifara uvećavamo za
1.
Primer 4: Za uneti broj n ispitati
da li je palindrom
Unosimo prirodan broj.
Palindrom je ako ima istu vrednost i ako se čita naopačke, npr 1221 je
palindrom. Zadatak ćemo rešiti tako što ćemo formirati drugi broj, kome ćemo
obrnuti cifre. Ako su uneti i novodobijeni broj jednaki, to znači da je broj
palindrom. Na primer, od broja 1234 napravićemo 4321, a pošto su uneti i
dobijeni broj različiti, ovaj broj nije palindrom.
Pošto nam uneti broj n treba
na kraju za upoređivanje, sačuvaćemo njegovu vrednost i koristiti pomoćnu promenljivu
m koju ćemo menjati u ciklusu.
S je novodobijeni broj sa
obrnutim ciframa.
U ciklusu uzimamo ostatak deljenja broja sa 10 ( to nam je uvek
preostala poslednja cifra broja sa desne strane, tj cifra jedinica)
m=1234 m%10=4
Znači u prvom prolasku kroz
ciklus novodobijeni broj je 4.
Sada m delimo sa 10 i
dobijamo 123
U
sledećem prolasku s=s*10+m%10 što znači da od 4 dobijamo 40 i na to dodajemo 3
pa nam je novodobijeni broj 43, a m dobija novu vrednost 12 posle m=123//10.
U sledećem prolasku s=s*10+m%10
što znači da od 43 dobijamo 430 i na to dodajemo 2 pa nam je novodobijeni broj
432, a m dobija novu vrednost 1 posle m=12//10.
U sledećem prolasku
s=s*10+m%10 što znači da od 432 dobijamo 4320 i na to dodajemo 1 pa nam je
novodobijeni broj 4321, a m dobija novu vrednost 0 posle m=1//10.
Sada je jasno zašto nam je
uslov za izvršavanje ciklusa da je m>0. Kada je m=0 "potrošili"
smo sve cifre i dobili novi broj čije su cifre obrnute od unetog.
Na
izlazu, ako su uneti i novodobijeni broj
jednaki, broj je palindrom, ako nisu, nije.
Napomena: Ovim smo završili predavanja za ovu školsku godinu.
Posle predloga zaključnih ocena koji ću vam poslati do kraja nedelje,
dogovorićemo se oko odgovaranja u školi ako bude potrebe.
Нема коментара:
Постави коментар