четвртак, 28. мај 2020.

CIKLUSI SA PREDUSLOVOM


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.





Нема коментара:

Постави коментар