C++

Petlje 10. Dio

(c) S.Šutalo i D.Grundler, 2007.

1

Petlja

Ponekad se dijelovi programa trebaju ponoviti više puta (iterirati). Struktura koja to omogućava naziva se programska petlja.
Ponavljati se može:
 

unaprijed zadani broj puta, sve dok je ispunjen određeni uvjet.

(c) S.Šutalo i D.Grundler, 2007.

2

Primjer petlje

Kao primjer petlje može poslužiti ovaj zadatak:

Potrebno je ispisati prvih 100 prirodnih brojeva. Treba uočiti da se dio naredbi izvršava opetovano sto puta.
(c) S.Šutalo i D.Grundler, 2007. 3

4 .Primjer dijagrama toka petlje  Dijagram toka petlje za ispis prvih sto prirodnih brojeva.Grundler.Šutalo i D. (c) S. 2007.

 while.Grundler.Šutalo i D. 5 .Petlje  Struktura petlje se može ostvariti naredbama:  for. 2007.  do – while. (c) S.

Grundler. 2007. prirast) { blok naredbi }  (c) S. 6 . Osnovni oblik for petlje: for (početno stanje. uvjet.for petlja  for petlja se najčešće koristi ako se dijelovi programa trebaju ponoviti konačan broj puta.Šutalo i D.

uvjet. for (početno stanje.Grundler.Šutalo i D.for petlja  Prvo se zadaje početno stanje kontrolne varijable petlje. 2007. 7 . prirast) { blok naredbi } (c) S.

8  . uvjet. 2007.Šutalo i D. Rezultat mora biti tipa bool (0 ili 1). (c) S.Grundler.for petlja  Zatim se računa vrijednost uvjeta. 0 ili 1 for (početno stanje. Kad vrijednost uvjeta postane neistina (0) petlja se prekida. prirast) {blok naredbi}  Blok naredbi se izvršava sve dok je vrijednost uvjeta jednaka logičkoj istini (1).

Šutalo i D.Grundler. uvjet. 9 . 2007. prirast)  Na kraju se računa prirast (prirast je najčešće iznos za koji se mijenja vrijednost kontrolne varijable petlje). (c) S.for petlja for (početno stanje.

Šutalo i D.Grundler. 10 .Dijagram toka for petlje (c) S. 2007.

..20 (c) S.. 2007..Grundler.Primjer 54  Zadatak (primjer for petlje):   Potrebno je ispisati brojeve od 1 do 20.....Šutalo i D..... Ispis neka bude oblika: Ispis brojeva od 1 do 20: 1 2 3 4 5 6 7 8 9 .... 11 ...

Naredba koja se izvodi konačan broj puta je ispis trenutne vrijednosti varijable brojac.Primjer 54  Napomene:  Treba zadati početnu vrijednost kontrolne varijable petlje (brojac=1).Šutalo i D.Grundler. 12 .  (c) S. 2007. postaviti uvjet (brojac<=20) i zadati prirast (brojac++).

 Na kraju ispisa kazalo prelazi na početak novog reda.Primjer 54  Napomene:  Zbog preglednosti ispisa nakon svakog broja ispisuje se jedno prazno mjesto.Šutalo i D. 2007.Grundler. (c) S. 13 .

Grundler. 2007. 14 .Primjer 54 blok (c) S.Šutalo i D.

#include<iostream> using namespace std. } (c) S. 15 . for (brojac=1.Šutalo i D. return 0.brojac++) { cout<<brojac<<" ". int main() { Primjer 54 int brojac. } cout<<endl. 2007.Grundler. cout<<"Ispis brojeva od 1 do 20:"<<endl.brojac<=20.

Grundler.Šutalo i D. 16 . 2007.Primjer 54  Provjera: (c) S.

. 2007.: ....Grundler. (c) S... 17 . .. Ispis neka bude oblika:  Ispis pocinje od broja: Ispis zavrsava brojem: Ispis brojeva od .. ......Primjer 55  Zadatak (primjer for petlje):  Potrebno je dopuniti prethodni primjer tako da se ispisuju brojevi iz raspona od M do N (raspon bira korisnik).. ..... do .Šutalo i D.

a uvjet o unesenoj završnoj vrijednosti raspona (N). (c) S. Izraz prirasta (brojac++) se ne mijenja.Šutalo i D. Početna vrijednost kontrolne varijable brojac je ovisna o unesenoj početnoj vrijednosti raspona (M).Grundler.Primjer 55  Napomene:  Razlika u odnosu na prethodni primjer je odabir granica raspona brojeva koji će biti ispisani. 2007. 18  .

Šutalo i D.Primjer 55 unos početne i završne vrijednosti raspona (c) S.Grundler. 19 . 2007.

cin>>n.Šutalo i D. return 0. cin>>m. cout<<"ispis zavrsava brojem:".m.#include<iostream> using namespace std. } (c) S.brojac<=n. 2007. 20 . } cout<<endl. for (brojac=m. cout<<"ispis pocinje od broja:".brojac++) { cout<<brojac<<" ".n.Grundler. int main() { Primjer 55 int brojac.

Šutalo i D. 2007. 21 .Primjer 55  Provjera: (c) S.Grundler.

Ispis neka bude oblika: Zbroj prvih 100 prirodnih brojeva je .Šutalo i D... 22 ..Primjer 56  Zadatak (for petlja – zbrajanje):   Potrebno je zbrojiti prvih 100 prirodnih brojeva. (c) S.Grundler. 2007.

Prije ulaska u petlju treba deklarirati varijablu (npr.Primjer 56  Napomene:  Treba zadati početnu vrijednost kontrolne varijable petlje (brojac=1).Šutalo i D. 23  .Grundler. (c) S. postaviti uvjet (brojac<=100) i zadati prirast (brojac++). 2007. zbroj) u koju će se pribrajati trenutne vrijednosti kontrolne varijable petlje pri svakom prolasku kroz petlju.

Petlja se ponavlja sve dok je sadržaj varijable brojac manji ili jednak 100. 24 .Grundler. 2007.Šutalo i D.Primjer 56  Napomene:  Naredba u bloku koja se izvodi konačan broj puta je uvećavanje vrijednosti varijable zbroj (u njoj će na kraju biti konačan zbroj prvih 100 brojeva) za tekuću vrijednost kontrolne varijable petlje (brojac).  (c) S.

2007.Šutalo i D.Primjer 56 početna vrijednost blok (c) S.Grundler. 25 .

brojac++) { zbroj=zbroj+brojac. return 0.brojac<=100. zbroj=0. int main() { int brojac.#include<iostream> using namespace std. cout<<"Zbroj prvih 100 prirodnih brojeva je:".zbroj.Šutalo i D. for (brojac=1. } Primjer 56 (c) S. 2007. 26 . } cout<<zbroj<<endl.Grundler.

27 .Grundler.Šutalo i D. 2007.Primjer 56  Provjera programa: (c) S.

..Šutalo i D. Broj bira korisnik. 2007... Ispis neka bude oblika: Upisi . (c) S. . 2 = . 28 . * ..  10 = . * .Primjer 57  Zadatak (primjer for petlje):  Treba ispisati tablicu množenja odabranog broja sa brojevima od 1 do 10.... * broj sa kojim zelis mnoziti: 1 = . ...Grundler. ...

Šutalo i D.Grundler. 2007. 29 .Primjer 57 brojeve od 1 do 10 generira for petlja (c) S.

brojac++) cout<<b<<" * "<<brojac<<" = "<<b*brojac<<endl. cin>>b. return 0.Šutalo i D. } (c) S. 30 . for (brojac=1. 2007.brojac<=10. int main() { int b.Primjer 57 #include<iostream> using namespace std.Grundler. cout<<"Upisi broj sa kojim zelis mnoziti:". brojac.

31 .Primjer 57  Provjera: (c) S.Grundler. 2007.Šutalo i D.

Ako se dogodi da se pokrene program u kome je beskonačna petlja program se može prekinuti zatvaranjem prozora u kom se izvršava program ili restartanjem računala (za računala koja nemaju višezadaćni operacijski sustav). Petlja se tada izvodi neograničen broj puta.beskonačna petlja    Može se dogoditi da je uvjet uvijek ispunjen. 32 . 2007.Šutalo i D. (c) S.Oprez .Grundler.

(c) S.) cout<<“beskonacna petlja”. 33 .b<10.beskonačna petlja  Beskonačna petlja je npr.Šutalo i D.: for(b=3. 2007.Grundler.  Vrijednost varijable b je uvijek manja od 10 pa će se petlja ponavljati neograničen broj puta.Oprez .

beskonačna petlja (c) S.Šutalo i D.Oprez .Grundler. 2007. 34 .

35 . izbjegavati promjenu vrijednosti kontrolne varijable unutar bloka naredbi for petlje.beskonačna petlja  Da bi se izbjegla beskonačna petlja treba:  zadati uvjet koji jamči konačan broj ponavljanja petlje.Oprez . 2007.Grundler.   navesti sva tri izraza u zagradi naredbe for. (c) S.Šutalo i D.

Grundler.... 36 . prirast različit od 1)   Treba ispisati parne brojeve u rasponu od 50 do 100..Primjer 58  Zadatak: (for petlja.. Ispis neka bude oblika: Parni brojevi iz intervala od 50 do 100 su: 50 52 54 56 . 2007...Šutalo i D... 98 100 (c) S.

2007.Grundler.Šutalo i D. 37 . problem je moguće riješiti tako da se vrijednost kontrolne varijable petlje mijenja za 2 (prirast 2).Primjer 58  Napomene:  Pošto je razlika dva susjedna parna broja 2. brojac=brojac+2 ili brojac+=2 (neće trebati provjeravati parnost ) (c) S.

2007. 38 .Primjer 58 (c) S.Grundler.Šutalo i D.

cout<<"Parni brojevi iz intervala od 50 do 100 su:"<<endl.#include<iostream> using namespace std.Šutalo i D. } (c) S.brojac+=2) { cout<<brojac<<" ". for (brojac=50. return 0. 39 .brojac<=100. } cout<<endl.Grundler. 2007. int main() { Primjer 58 int brojac.

Primjer 58  Provjera.Šutalo i D. 2007.Grundler. 40 . (c) S.

Ispis neka bude oblika: Parni brojevi iz intervala od 100 do 50 su: 100 98 96 94 .. 41 .Grundler. negativna vrijednost prirasta):   Treba ispisati parne brojeve u rasponu od 100 do 50. 2007......... 52 50 (c) S.Šutalo i D.Primjer 59  Zadatak (for petlja.

2007.  U ovome slučaju početna vrijednost kontrolne varijable petlje mora biti veća od završne.Šutalo i D. 42 .Grundler. Npr. prirast može biti: brojac=brojac-2 (brojac-=2)  (c) S.Primjer 59  Napomene:  Prirast može biti i negativan pa se tada vrijednost kontrolne varijable petlje smanjuje.

Šutalo i D. 2007.Grundler.Primjer 59 početno stanje uvjet prirast (c) S. 43 .

44 . 2007. } (c) S.Grundler.brojac-=2) { cout<<brojac<<" ".#include<iostream> using namespace std.Šutalo i D. return 0.brojac>=50. cout<<"Parni brojevi iz intervala od 100 do 50 su:"<<endl. Primjer 59 int main() { int brojac. for (brojac=100. } cout<<endl.

Grundler.Šutalo i D. 2007.Primjer 59  Provjera: (c) S. 45 .

.. 46 .. . (c) S.. Ispis neka bude oblika:  Brojevi djeljivi sa 7 iz raspona od 200 do 300 su: . .. 2007.. . ..Grundler.Šutalo i D....Primjer 60  Zadatak (provjera djeljivosti):  Treba potražiti pa ispisati brojeve djeljive sa 7 unutar raspona od 200 do 300.

Primjer 60

Napomene:

Blok naredbi u petlji se izvršava za svaki broj iz zadanog raspona.


Ispisuju se samo brojevi djeljivi s brojem 7.
Djeljivost brojeva se provjerava operatorom modulo (%).

(c) S.Šutalo i D.Grundler, 2007.

47

Primjer 60

Provjera djeljivosti uporabom operatora modulo.

(c) S.Šutalo i D.Grundler, 2007.

48

#include<iostream> using namespace std;

Primjer 60

int main()
{ int brojac; cout<<"Brojevi djeljivi sa 7 iz raspona od 200 do 300 su:"<<endl;

for (brojac=200;brojac<=300;brojac++)
{ if(brojac%7==0) cout<<brojac<<" ";

}
cout<<endl; return 0; }
(c) S.Šutalo i D.Grundler, 2007.

49

Primjer 60  Provjera: (c) S.Grundler. 50 . 2007.Šutalo i D.

Primjer 61  Zadatak (provjera djeljivosti... iz raspona od .. ... (c) S.Šutalo i D.Grundler.... su: .. 2007. do . dopuna prethodnog primjera):  Treba provjeriti djeljivost brojeva unutar odabranog raspona sa zadanim brojem. . 51 ..... ... . Ispis neka bude oblika:  Pocetna vrijednost raspona: Zavrsna vrijednost raspona: Provjerava se djeljivost sa brojem: Brojevi djeljivi sa ..

Grundler.Primjer 61 promjene u odnosu na prethodni slučaj (c) S.Šutalo i D. 2007. 52 .

cin>>m.m. cout<<"Pocetna vrijednost raspona:". (c) S. cin>>n.Šutalo i D. cout<<"Provjerava se djeljivost sa brojem:". cin>>b. 2007. cout<<"Zavrsna vrijednost rapona:". 53 .n.b.Grundler. Primjer 61/a int main() { int brojac.#include<iostream> using namespace std.

for (brojac=m.brojac++) { if(brojac%b==0) cout<<brojac<<" ".Šutalo i D. } cout<<endl.brojac<=n. return 0. 2007. } (c) S.Grundler. 54 .Primjer 61/b cout<<"Brojevi djeljivi sa "<<b<<" iz raspona od " <<m<<" do "<<n<<" su:"<<endl.

Šutalo i D.Primjer 61  Provjera: (c) S. 55 .Grundler. 2007.

Ugniježđene for petlje  for petlje mogu biti ugniježđene jedna unutar druge. 2007. njena se kontrolna varijabla postavi na početnu vrijednost. Pri ulazu u vanjsku petlju. 56 .Šutalo i D. Sa tom se vrijednošću ulazi u unutarnju petlju.   (c) S.Grundler.

Šutalo i D.Ugniježđene for petlje (c) S.Grundler. 2007. 57 .

kontrolna varijabla unutarnje petlje se postavi na početnu vrijednost i sve dok je uvjet zadovoljen. 2007.Šutalo i D. (c) S. Za svaku vrijednost kontrolne varijable vanjske petlje izvodi se cjelokupna unutarnja petlja. kontrolna varijabla vanjske petlje se mijenja za vrijednost prirasta i provjerava se uvjet vanjske petlje.Ugniježđene for petlje  Pri ulazu u unutarnju petlju. Po završenoj unutarnjoj petlji. 58   . izvršava se blok naredbi unutarnje petlje.Grundler.

a unutarnje od 1 do 5. 2007.)  (c) S. (Treba uočiti da se za svaku vrijednost kontrolne varijable vanjske petlje (i) izvrši cjelokupna unutarnja petlja (j od 1 do 5). U programu se ispisuju trenutne vrijednosti kontrolnih varijabli vanjske i unutarnje petlje.Šutalo i D. 59 .Grundler.  Vrijednost kontrolne varijable vanjske petlje mijenja se od 1 do 3.Primjer 62  Zadatak (ugniježđena petlja).

Grundler. 60 . 2007.Šutalo i D.Primjer 62 vanjska petlja unutarnja petlja kazalo se pomiče na početak sljedećeg redka (c) S.

Šutalo i D. 2007.Primjer 62  Vanjska petlja omogućit će :  ispis teksta: Vanjska petlja:. 61 .  Po ispisu svakoga od redaka. od 1 do 5). (c) S. kazalo se prebacuje na početak novog redka i postupak se ponavlja.Grundler.    ispis trenutne vrijednosti kontrolne varijable vanjske petlje (i). ispis teksta: Unutarnja petlja: Unutarnja petlja :  ispisuje trenutne vrijednosti kontrolne varijable unutarnje petlje (j.

i <= 3. for ( j = 1. int main() { Primjer 62 int i.Šutalo i D. } return 0. cout<<"Unutarnja petlja: ". 2007.#include <iostream> using namespace std. i++ ) { cout<<endl<<"Vanjska petlja: i="<<i<<endl. 62 . j++ ) { cout<<" j="<<j.Grundler. for ( i = 1. } cout<<endl. j. } (c) S. j <= 5.

Grundler. 63 .Primjer 62  Provjera: (c) S.Šutalo i D. 2007.

64 . 2007.Primjer 63  Zadatak (ugniježđena for petlja):   Treba ispisati tablicu množenja za brojeve od 1 do 10 Ispis neka bude oblika: (c) S.Grundler.Šutalo i D.

Grundler.Primjer 63  Napomene:  Vanjska petlja omogućit će stvaranje 10 redaka. Naredba koja se izvršava u unutarnjoj petlji je ispis umnoška trenutnih vrijednosti kontrolnih varijabli vanjske i unutarnje petlje.Šutalo i D. 2007. 65  . kazalo se prebacuje na početak novog redka.   Unutarnja petlja će u svakome redku stvoriti 10 stupaca. (c) S. Po ispisu svakoga od redaka.

Grundler.Šutalo i D.Primjer 63 unutarnja petlja vanjska petlja kazalo se pomiče na početak sljedećeg redka (c) S. 2007. 66 .

red++) { for(stup=1. } (c) S.stup++) { cout<<red*stup<<" ".Šutalo i D. } cout<<endl. Primjer 63 } return 0. 2007.stup<=10. 67 .Grundler. int main() { int stup.red<=10.#include<iostream> using namespace std.red. for(red=1.

Grundler. (c) S.Primjer 63  Ispis je dosta nepregledan. 68 . 2007.Šutalo i D. trebalo bi ga oblikovati tako da bude u pravilnim stupcima.

koju treba uključiti naredbom include.manipulatori  Ispis se može oblikovati manipulatorima (operatorima za rukovanje ispisom).  Da bi ispis bio u pravilnim stupcima. 2007. Svi su manipulatori definirani u biblioteci iomanip. koristi se manipulator setw(int) koji određuje koliki će se prostor predvidjeti za ispis podatka koji slijedi u izlaznom toku.  (c) S.Grundler.Primjer 63 . 69 .Šutalo i D.

Šutalo i D. 2007.Primjer 63 za ispis svakog podatka predviđa se 7 mjesta (c) S.Grundler. 70 .

red++) { for(stup=1. 2007.Šutalo i D.#include<iostream> #include<iomanip> using namespace std. } cout<<endl.red. } (c) S. 71 . for(red=1. int main() Primjer 63 { int stup.stup<=10.red<=10.stup++) { cout<<setw(7)<<red*stup. } return 0.Grundler.

Šutalo i D. 72 .Primjer 63 (c) S.Grundler. 2007.

Izvršava se sve dok je ispunjen zadani uvjet. 2007.Šutalo i D. 73 .Grundler.while petlja  while petlja se najčešće koristi ako broj ponavljanja bloka naredbi u petlji nije unaprijed poznat. Osnovni oblik while petlje: while (uvjet) {  blok naredbi } (c) S.

 Zatim se provjerava vrijednost uvjeta (rezultat je tipa bool). 74 .Šutalo i D. (c) S.Grundler. 2007.while petlja  Prije ulaska u while petlju potrebno je zadati početnu vrijednost varijabli koja se koristi u uvjetu.

Grundler.  (c) S. 75 .while petlja  Ako je vrijednost uvjeta logička istina (1) izvodi se blok naredbi iz petlje.Šutalo i D. 2007. Ako je vrijednost uvjeta logička neistina (0). blok naredbi iz petlje se preskače i program se nastavlja od prve naredbe nakon petlje.

2007.Šutalo i D.Dijagram toka while petlje (c) S.Grundler. 76 .

. 77 .... Ispis neka bude oblika: Ispis brojeva od 1 do 20: 1 2 3 4 5 6 7 8 9 ......Šutalo i D... 2007.......Primjer 64  Zadatak (while petlja može zamijeniti for petlju):   Uporabom while petlje potrebno je ispisati brojeve od 1 do 20.Grundler..20 (c) S.

(c) S. 2007.Grundler. 78 . Za rješenje ovog problema potrebno je. zadati uvjet (brojac<=20).Šutalo i D.Primjer 64   Petlja while može zamijeniti for petlju. zadati početnu vrijednost varijable koja se koristi u uvjetu (brojac=1). prije ulaska u petlju. a u bloku naredbi u petlji uz ostalo zadati i prirast (brojac++).

Grundler.Šutalo i D.Primjer 64 početna vrijednost uvjet blok (c) S. 79 . 2007.

return 0.Grundler.Šutalo i D. 80 . int main() { Primjer 64 int brojac. 2007. } ".#include<iostream> using namespace std. while(brojac<=20) { cout<<brojac<<" brojac=brojac+1. } (c) S. cout<<"Ispis brojeva od 1 do 20:"<<endl. brojac=1. cout<<endl.

Primjer 64  Provjera: (c) S. 2007. 81 .Grundler.Šutalo i D.

. Unos brojeva traje sve dok korisnik ne upiše 0. 82 . 2007. Unesi broj: Unesi broj: . Uneseno je .Primjer 65  Zadatak:  Treba unijeti N realnih brojeva pa izračunati njihovu srednju vrijednost..Šutalo i D.. Srednja vrijednost je .. Ispis neka bude oblika:  Nakon posljednjeg broja unesi nulu. (c) S...Grundler.. brojeva.

Šutalo i D.Grundler. 83 . Uvjet će biti uspoređivanje sadržaja varijable u koju se pohranjuje uneseni broj sa 0 (N==0). 2007. U ovome slučaju potrebno je unijeti prvi broj (N).   (c) S. Prije ulaska u petlju potrebno je zadati početnu vrijednost varijable koja se koristi u uvjetu.Primjer 65  Problem se lako rješava while petljom (broj brojeva koje treba unijeti nije unaprijed poznat).

Primjer 65  Ako je uvjet ispunjen. 2007. U bloku je potrebno:     uneseni broj pribrojiti varijabli zbroj (zbrajanje). varijablu broj uvećati za jedan (prebrojavanje). dok se ne unese 0. izvršit će se blok naredbi u petlji.Grundler. unijeti sljedeći broj. (c) S. tj.  Unos se nastavlja sve dok je uvjet ispunjen. 84 .Šutalo i D.

Primjer 65  Kada korisnik unese 0. program se nastavlja od prve naredbe nakon petlje. 85 .Šutalo i D. uvjet više nije ispunjen.  (c) S. 2007.Grundler. Nakon petlje treba izračunati i ispisati srednju vrijednost unesenih brojeva.

86 .Šutalo i D. 2007.Grundler.Primjer 65 početna vrijednost (c) S.

87 . 2007.Grundler.Primjer 65 definiranje uvjeta naredbe u bloku (c) S.Šutalo i D.

cin>>N."<<endl. float N. cout<<"Nakon posljednjeg broja unesi nulu.Šutalo i D."<<endl. (c) S. cout<<"Unesi broj:". 2007. int main() { cout<<"U programu se unosi N brojeva.Grundler. 88 . a zatim se \ racuna srednja vrijednost unesenih brojeva.Primjer 65/a #include<iostream> using namespace std.zbroj. broj=0. zbroj=0.broj.

\ Srednja vrijednost je "<<zbroj/broj<<endl. zbroj=zbroj+N.Šutalo i D. 2007. } cout<<"Uneseno je "<<broj<<" brojeva. } (c) S. cin>>N. cout<<"Unesi broj:".Grundler.Primjer 65/b while(N!=0) { broj=broj+1. return 0. 89 .

2007. 90 .Grundler.Šutalo i D.Primjer 65  Provjera: (c) S.

Njena specifičnost je u tome što uvjet ispituje nakon izvođenja bloka naredbi u petlji.Grundler.Šutalo i D. 2007.do-while petlja  do-while petlja se također koristi ako broj ponavljanja bloka naredbi u petlji nije unaprijed poznat. 91 .  (c) S.

2007.do-while petlja  Osnovni oblik do-while petlje: do { blok naredbi } while (uvjet).Šutalo i D. (c) S. 92 .Grundler.

93 . 2007.Šutalo i D.Grundler.Dijagram toka do-while petlje (c) S.

Šutalo i D. 94 . U tome je i osnovna razlika ove petlje u odnosu na petlje for i while kod kojih je moguće da se blok naredbi u petlji ne izvede niti jednom ako uvjet petlje nije ispunjen. 2007.  (c) S.do-while petlja  Oblik ove petlje je takav da se blok naredbi u petlji izvodi bar jednom bez obzira da li je uvjet ispunjen ili ne.Grundler.

. Uneseno je ... 2007..Šutalo i D... Ispis neka bude oblika:  Nakon posljednjeg broja unesi nulu. 95 .Grundler. Srednja vrijednost je . brojeva. (c) S.Primjer 66  Zadatak (do-while):  Prethodni primjer riješiti do-while petljom (treba unijeti N realnih brojeva pa izračunati njihovu srednju vrijednost). Unesi broj: Unesi broj: ..

(c) S.  varijablu broj uvećati za jedan. 96 .Grundler.Primjer 66  Kada se koristi do-while petlja nije potrebno unijeti prvi broj prije početka petlje jer se uvjet ispituje tek nakon izvođenja naredbi iz bloka. U bloku je potrebno:    unijeti broj. uneseni broj pribrojiti varijabli zbroj. 2007.Šutalo i D.

Šutalo i D. (c) S. 97 . 2007.Grundler.Primjer 66   Uvjet se ispituje nakon bloka naredbi u petlji. po izlasku iz petlje varijablu broj treba umanjiti za jedan. Pošto će na ovaj način biti prebrojena i pribrojena 0 kao uneseni broj.

98 .Šutalo i D.Primjer 66 (c) S.Grundler. 2007.

99 .Šutalo i D. 2007.Grundler.Primjer 66 naredbe u bloku uvjet (c) S.

2007.zbroj."<<endl.broj. cout<<"Nakon posljednjeg broja unesi nulu. 100 . a zatim se racuna \ srednja vrijednost unesenih brojeva.Šutalo i D. broj=0. zbroj=0."<<endl.Primjer 66/a #include<iostream> using namespace std. (c) S.Grundler. float N. int main() { cout<<"U programu se unosi N brojeva.

zbroj=zbroj+N.Grundler. } while(N!=0).Šutalo i D.Srednja vrijednost je " <<zbroj/broj<<endl. cout<<"Uneseno je "<<broj<<" brojeva.do { cout<<"Unesi broj:". cin>>N. return 0. 2007. 101 . } (c) S. Primjer 66/b broj=broj+1. broj=broj-1.

102 .Primjer 66  Provjera: (c) S.Grundler.Šutalo i D. 2007.

103 .  (Break je i sastavni dio switch–case naredbe. 2007.Naredba break  Naredba break se rabi kada treba prekinuti izvođenje nekog bloka naredbi unutar petlje.) (c) S. Nakon naredbe break program prelazi na prvu naredbu iza programske petlje.Šutalo i D.Grundler.

Primjer 67

Treba ispisati brojeve od 10 prema 1. Ispis se prekida nakon broja 3.
Ispis neka bude oblika:

Ispis brojeva: 10, 9, 8, 7, 6, 5, 4, 3, prekinuto brojenje unatrag.

(c) S.Šutalo i D.Grundler, 2007.

104

Primjer 67

ako je vrijednost varijable n=3, blok naredbi u petlji se prekida
(c) S.Šutalo i D.Grundler, 2007. 105

#include <iostream>
using namespace std; int main () {

Primjer 67

int n;
for (n=10; n>0; n--) { cout << n << ", ";

if (n==3)
{ cout<<" prekinuto brojenje unatrag."<<endl; break;

}
} return 0; }
(c) S.Šutalo i D.Grundler, 2007. 106

2007.Grundler.Primjer 67  Provjera: (c) S.Šutalo i D. 107 .

2007.) (c) S.Šutalo i D. umjesto naredbe continue koristiti naredbu grananja if jer nepažljiva uporaba naredbe continue može izazvati beskonačnu petlju.Grundler. pa nakon toga petlju nastaviti.  (Bolje je. 108 .Naredba continue  Ponekad je potrebno preskočiti dio bloka naredbi do kraja programske petlje. U tu se svrhu koristi naredba continue.

4.Primjer 68  Treba ispisati brojeve od 10 prema 1.Grundler. Ispis neka bude oblika:  Ispis brojeva: 10. 5. 2007.Šutalo i D. 1. Trojka se preskače. 7. 109 . (c) S. 6. 8. 9. a nakon toga se nastavlja ispis. trojka se preskace 2.

Primjer 68 ako je uvjet ispunjen. 2007.Šutalo i D. a nakon toga se petlja nastavlja.Grundler. (c) S. preskače se dio bloka naredbi do kraja programske petlje. 110 .

#include <iostream> using namespace std. 2007. n>0. ". ". } cout << n << ".Šutalo i D. 111 . n--) { Primjer 68 if (n==3) { cout<<" trojka se preskace.Grundler. for (n=10. } return 0. continue. int main () { int n. } (c) S. cout<<"Ispis brojeva:"<<endl.

Šutalo i D. 2007.Primjer 68  Provjera: (c) S.Grundler. 112 .

Sign up to vote on this title
UsefulNot useful