WEBnSTUDY.com
Algoritmi

Ciklični algoritmi - Zadaci

Ovo su zadaci za vežbanje osnovnih cikličnih struktura. Kod ciklične strukture, isti niz koraka se izvršava više puta zavisno od toga da li je neki uslov zadovoljen. Zavisno od toga kakva je situacija pri proveri uslova za izvršavanje, koraci mogu da se izvrše više puta, ali i samo jednom ili čak i nijednom. Ovi zadaci su nam značajni iz nekoliko razloga:

Da li treba reći koliko su ciklusi važni? Veliku većinu problema koje čovek rešava intuitivno, računar može rešiti samo kroz ponavljanje jednih te istih koraka u kojima ispituje/obrađuje podatak-po-podatak. Tako da - bez ciklusa praktično nema nikakvog ozbiljnog programiranja!

Ciklusi sa preduslovom

Uslovni ciklusi se "vrte" dok je uslov zadovoljen. Jedina razlika je da li se uslov proverava na početku ili na kraju ciklusa. Kod ciklusa sa preduslovom, uslov se ispituje pre početka svake iteracije. To znači da ako uslov već na početku nije zadovoljen, ciklus može da se ne izvrši ni jednom.

Zadaci za vežbu

Zadatak 1
Unose se dva cela broja, A i B. Napraviti algoritam koji će ispisati sve brojeve od A do B korišćenjem ciklusa sa preduslovom.

alg-whl-brojevi-ab-sr

Zadatak 2
Ispisati sve brojeve od A do B, gde se A i B unose, u razmacima od po X.
Npr. ako su A=5.3, B=7.6 i X=0.3, onda se ispisuju brojevi 5.3 5.6 5.9 6.2 6.5 6.8 7.1 i 7.4 .
Nije obavezno da je A<B, tako da je potrebno obezbediti da se u svakom slučaju algoritam pravilno izvršava.

alg-whl-step-sr

Zadatak 3
Ispisati sve faktorijele počev od 1!, zaključno sa faktorijelom unetog celog pozitivnog broja X.

alg-whl-fakt-sr

Zadatak 4
Unose se celi brojevi dok se ne unese 0. Izračunati i ispisati zbir recipročnih unetih brojeva. Npr. za unete brojeve 5, 3 i 9, dobijamo zbir 1/5 + 1/3 + 1/9.

alg-whl-zbir-sr

Zadatak 5
Unose se celi brojevi dok se ne unese 0. Izračunati i ispisati prosek unetih parnih brojeva.

alg-whl-prosek-par-sr

Zadatak 6
Među brojevima 1, 1+1/2, 1+1/2+1/3, ... treba naći prvi koji je veći ili jednak unetom broju X.

alg-whl-progres-sr

Zadatak 7
Pronaći prvi broj deljiv brojem N, počev od unetog celog broja X.

alg-whl-prvi-deljiv-sr

Zadatak 8
Ispisati sve delioce unetog celog pozitivnog broja X.

alg-whl-delioci-sr

Zadatak 9
Proveriti da li je uneti celi pozitivan broj prost. Proveru prekiuti onog trenutka kada se naiđe na delilac.

alg-whl-prost-sr

Zadatak 10
Unosi se celi pozitivan broj X. Ispitati da li je deljiv brojem N (takođe ceo pozitivan broj), ali bez korišćenja operatora DIV, MOD (%) i funkcija ceil(), floor() i round().

alg-whl-deljiv-sr

Zadatak 11
Napisati program za izdvajanje cifara unetog celog broja X.

alg-whl-cifre-sr

Zadatak 12
Izračunati zbir cifara unetog celog pozitivnog broja X.

alg-whl-zbircif-sr

Zadatak 13
Proveriti da li se u unetom celom pozitivnom broju X nalazi cifra C (koju takođe unosimo na početku, kao jedan od brojeva 0,1,2,3,...9).

alg-whl-ima-cifra-sr

Zadatak 14
Unosi se ceo pozitivan dekadni broj. Preračunati ovaj broj u binarni korišćenjem ciklusa sa preduslovom.

alg-whl-dek-bin-sr

Ciklusi sa postuslovom

Kod ciklusa sa postuslovom, situacija je malo drugačija - uslov se ispituje posle svake iteracije. To znači da ciklus mora da se izvrši bar jednom, da bi se uopšte stiglo do provere uslova.

Različiti programski jezici imaju malo drugačije varijante ovog ciklusa. U JavaScriptu, Javi i sličnim jezicima, ovaj ciklus se definiše kao do-while naredba kod koje se ciklus izvršava dok je uslov zadovoljen. U Pascalu se ovaj cilus implementira blokom repeat-until i izvršava se sve dok uslov nije zadovoljen. U našim algoritmima koristimo varijantu koja je saglasna sa JavaScriptom

Zadaci za vežbu

Zadatak 1
Dat je algoritam:

Šta će biti njegov rezultat?

alg-rept-sta-ispisuje1-sr

Zadatak 2
Unose se tri cela broja, A, B i X. Kreirati algoritam koji će ispisati sve cele brojeve od A do B, koji su deljivi sa X, i to korišćenjem ciklusa sa postuslovom.

alg-rept-deljivi-ab-sr

Zadatak 3
Unose se celi brojevi dok se ne unese 0. Izračunati i ispisati zbir dupliranih vrednosti unetih brojeva.

alg-rept-zbirdup-sr

Zadatak 4
Na osnovu unetog celog broja X treba formirati broj Z koji je jednak broju X sa obrnutim redosledom cifara (npr. ako je uneto X=1234, onda treba da se dobije Z=4321).

alg-rept-cifre-rev-sr

Zadatak 5
Ispisati članove Fibonačijevog niza koji su manji od zadatog maksimuma. Fibonačijev niz uvek počinje brojevima 0 i 1, a svaki sledeći član se dobija kao zbir prethodna dva. Znači, brojevi bi bili: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

alg-rept-fibonaci-sr

Zadatak 6
Naći najveći zajednički delilac (NZD) za dva uneta cela pozitivna broja.

alg-rept-nzd-sr

Zadatak 7
Naći najmanji zajednički sadržilac (NZS) za dva uneta cela pozitivna broja.

alg-rept-nzs-sr

Zadatak 8
Izračunati dekadnu vrednost za uneti celi binarni broj.

alg-rept-bin-dek-sr

Zadatak 9
Napraviti igru pogađanja broja. Računar treba da "zamisli" neki broj od 1 do 1000 (korišćenjem slučajnih brojeva). Korisnik pokušava da pogodi broj, tako što mu za svaki uneti broj računar daje odgovor da li je zamišljeni broj "veći" li "manji". Igra traje sve dok korisnik ne pogodi broj i tada se ispisuje njegov rezultat - broj pokušaja koliko mu je trebalo.

alg-rept-pogadjanje-sr

Zadatak 10
Unose se dva uneta cela pozitivna broja A i B, pri čemu važi da je A veće ili jednako B. Izračunati količnik i ostatak celobrojnog deljenja, bez upotrebe operatora DIV i MOD (odnosno %), kao i bez korišćenja funkcija trunc() i round().

alg-rept-div-mod-sr

Zadatak 11
Unosi se glavni string TXT i podstring SUB. Ispitati da li se podstring nalazi u glavnom stringu, i ako se nalazi, ispisati poziciju njegove prve pojave. Ostale eventualne pojave podstringa u glavnom stringu ignorišemo.

alg-rept-podstring2-sr

Grafika

Nekoliko grafičkih zadataka koji koriste uslovne cikluse.

Zadaci za vežbu

Zadatak 1
Nacrtati mrežu linija po horizontali i vertikali. Linije međusobno treba da budu razdvojene 40 piksela.

Primer rezultata
alg-rept-grf-grid-sr

Zadatak 2
Na sredini grafičkog okvira, nacrtati seriju pravougaonika koji se nadovezuju jedan na drugi. Širina i visina im se određuju na slučajan način po sledećim pravilima: visina je broj između 30 i 50, a širina je broj od 0 do 510. Svaki pravougaonik treba da bude obojen zavisno od svoje širine (najširi je najsvetliji, najuži je najtamniji).

Primer rezultata
alg-rept-grf-kvads-sr

Zadatak 3
Grafika na slici izgleda kompleksno, ali se u stvari dobija crtanjem uzastopnih elipsi, kojima se menjaju širina i visina, sa centrom na sredini grafičkog okvira.

Primer rezultata
alg-whl-grf-elipse-sr

Zadatak 4
Nacrtati sferu kao na priloženoj slici. Iako sfera izgleda trodimenzionalno, tražena grafika se dobija na jednostavan način, uzastopnim crtanjem dve elipse kojima se menja širina, odnosno visina, sa centrom na sredini grafičkog okvira.

Primer rezultata
alg-whl-grf-elipse-sfera-sr

Zadatak 5
Nacrtati kvadratnu spiralu, počev od centra ekrana. Spirala se crta dok na ekranu ima mesta.

Primer rezultata
alg-whl-grf-spirala-sr
  1. M. Čabarkapa, N. Spalević (1995): Metodička zbirka zadataka iz programiranja sa rešenjima u Pascal-u, Sova, Beograd
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies) radi vođenja interne statistike u cilju unapređenja korisničkog iskustva. Tako prikupljeni podaci su anonimni i nedostupni trećim licima. Vaša privatnost nije ugrožena ni na koji način.