Petlje

      Svi viši programski jezici poznaju petlje, pa tako i C++ raspolaže sa svim uobičajenim vrstama petlji.Petlje nam služe da ponavljamo jedan dio koda više puta. Dio petlje koji se ponavlja naziva se tijelo petlje. Svako ponavljanje tijela petlje se naziva iteracija. Vjerovatno najjednostavnija petlja od svih je while petlja. Ta petlja provjerava da li je neki uslov ispunjen, a ako jeste ide se u iteraciju, tj. ponavljanje tijela petlje. Ako uslov nije ispunjen onda se ne ulazi u tijelo petlje. Recimo da želimo napisati program koji će pozdravljati korisnika programa onoliko puta koliko mu to korisnik kaže.

/* program koji pozdravlja korisnika */
#include <iostream>
using namespace std;
int main (){
int broj;
cout<<"Koliko puta vas treba pozdraviti:";
cin>>broj;
while(broj>0){
cout<<"Zdravo\n";
broj=broj-1;
}
cout<<"To je sve...\n";
system("Pause");
return 0;
}

  Tijelo petlje, koje se u ovom slučaju nalazi u vitičastim zagradama, jer se tijelo sastoji od više izjava, će se izvršavati sve dok je izraz broj>0 tačan. Ako korisnik unese broj 3, tijelo petlje će se izvršiti tačno 3 puta, jer unutar tijela petlje, program umanjuje varijablu broj u svakoj iteraciji za 1. Da se varijabla broj u svakoj iteraciji ne umanjuje za 1, onda bi se nakon postavljanja varijable broj na 3, tijelo petlje izvršavalo sve dok program ne potroši radnu memoriju sa kojom raspolaže. Ovo se često naziva beskonačna petlja, iako ništa sa računarima nije beskonačno. Probajte komentirati liniju broj=broj1...

Šta bi se desilo da korisnik u gornjem programu unese broj 0 ili 5?
   Ništa, tj. tijelo petlje se ne bi nikako izvršilo, jer je logički izraz koji kontroliše tijelo petlje netačan. Važno je primjetiti kako ova petlja prvo testira da li je neki uvjet ispunjen, i ako jeste onda se ide na izvršavanje tijela petlje. Drugim riječima while petlja se može izvršiti 0, 1, 2, ... n puta.Ova petlja ima i rođaku koja se zove dowhile petlja.
Evo kako bi taj isti program izgledao kada bi se napisao sa tom petljom:

/* program koji pozdravlja korisnika */
#include <iostream>
using namespace std;
int main (){
int broj;
cout<<"Koliko puta vas treba pozdraviti: ";
cin>>broj;
do{
cout<<"Zdravo\n";
broj=broj-1;
} while(broj>0);
cout<<"To je sve...\n";
system("Pause");
return 0;
}

Tijelo petlje počinje nakon ključne riječi do,a završava sa while. Tijelo petlje se i u ovom slučaju nalazi u vitičastim zagradama, jer se sastoji od više izjava. Tijelo petlje će se izvršavati sve dok je uslov broj>0 tačan. Ako korisnik unese broj 3, tijelo petlje će se izvršiti tačno 3 puta, jer unutar tijela petlje, program umanjuje varijablu broj u svakoj iteraciji za 1. Da se varijabla broj u svakoj iteraciji ne umanjuje za 1, onda bi nakon postavljanja varijable broj na 3, imali beskonačnu petlju.

Važno: Ne zaboravite sa dowhile petljom staviti završni tačkazarez iza logičkog izraza.

Šta će se ovdje desiti ako korisnik unese broj 0 ili 5?
Petlja će se bez obzira na to šta korisnik unese izvršiti jedanput, a nakon toga sve je u rukama logičkog izraza koji kontroliše petlju. Drugim riječima dowhile petlja se može izvršiti 1, 2, ... n puta.
Napišite program koji će sabirati pozitivne brojeve i koji će nakon toga dodatno saopćiti i najveći uneseni broj. Sa sabiranjem se prestaje unosom negativnog broja.

/* program koji nalazi sumu i najveci
broj medju unesenim pozitivnim brojevima*/
#include <iostream>
using namespace std;
int main (){
int broj, suma, max;
broj=suma=max=0;
do{
suma=suma+broj;
if(broj>max)
max=broj;
cout<<"Unesite broj: ";
cin>>broj;
}while(broj>=0);
cout<<"Suma svih brojeva je "<<suma<<endl;
cout<<"Najveci uneseni broj je "<<max<<endl;
system("Pause");
return 0;
}

EKRAN 1:
Unesite broj: 2
Unesite broj: 3
Unesite broj: 10
Unesite broj: 5
Unesite broj: -1
Suma svih brojeva je 20
Najveci uneseni broj je 10


EKRAN 2:
Unesite broj: 77
Unesite broj: 3
Unesite broj: 10
Unesite broj: 110
Unesite broj: -3
Suma svih brojeva je 200
Najveci uneseni broj je 110

Napišite progam koji saopštava koliko od unesenih pozitivnih brojeva su parni.

/* program pronalazi koliko brojeva
medju unesenim brojevima su parni*/
#include <iostream>
using namespace std;
int main (){
int broj, brojac;
brojac=0;
cout<<"Unesite broj: ";
cin>>broj;
while(broj>=0){
if(broj%2==0)
brojac++;
cout<<"Unesite broj: ";
cin>>broj;
}
cout<<"Unijeli ste "<<brojac<<" parnih brojeva.";
system("Pause");
return 0;
}

EKRAN 1:
Unesite broj: 1
Unesite broj: 2
Unesite broj: 12
Unesite broj: -1
Unijeli ste 2 parnih brojeva

EKRAN 2:
Unesite broj: 0
Unesite broj: 2
Unesite broj: 4
Unesite broj: 6
Unesite broj: 8
Unesite broj: -3
Unijeli ste 5 parnih brojeva

1. Napišite program koji saopštava kolika je aritmetička sredina unesenih pozitivnih brojeva, koji je najveći, najmanji i koliko brojeva je unešeno.

EKRAN 1:
Unesite broj:2
Unesite broj:3
Unesite broj:8
Unesite broj:5
Unesite broj:-22
4 broja, sredina=4.5 , min=2 , max=8

EKRAN 1:
Unesite broj:12
Unesite broj:3
Unesite broj:-120
2 broja, sredina=7.5 , min=3 , max=12