Petlje for se mogu pisati jedna unutar druge, tj. biti ugniježđene jedna unutar druge.

-
Pri ulazu u vanjsku petlju, kontrolna varijabla vanjske petlje poprima početnu vrijednost. Provjerava se uvjet vanjske petlje, pa ako je ispunjen, ulazi se u unutarnju petlju.
-
Pri ulazu u unutarnju petlju, kontrolna varijabla unutarnje petlje poprima početnu vrijednost, provjerava se uvjet unutarnje petlje, pa ako je ispunjen izvršava se blok naredbi unutarnje petlje.
-
Po završetku bloka naredbi unutarnje petlje mijenja se vrijednost kontrolne varijable unutarnje petlje za vrijednost prirasta unutarnje petlje. Sve dok je zadovoljen uvjet unutarnje petlje njen blok naredbi se opetovano ponavlja uz stalnu vrijednost kontrolne varijable vanjske petlje.
-
Kada uvjet unutarnje petlje nije ispunjen izlazi se iz unutarnje petlje i ponovo se počne izvršavati vanjska petlja. Vrijednost kontrolne varijable vanjske petlje se mijenja za vrijednost prirasta, provjerava se uvjet vanjske petlje pa ako je ispunjen, ulazi se u unutarnju petlju. Sada se ponovo ponavlja opisan postupak izvršavanja unutarnje petlje.
-
Sve se ponavlja do trenutka kada uvjet vanjske petlje više nije ispunjen. Valja uočiti da se za svaku vrijednost kontrolne varijable vanjske petlje izvodi cjelokupna unutarnja petlja.
Sljedeći zadatak prikazuje tijek izvršavanja ugnježđene petlje for.
|
Zadatak:
|
Treba ispisati tablicu množenja za brojeve od 1 do 10. Ispis neka bude oblika:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
|
3 |
6 |
9 |
12 |
15 |
18 |
21 |
24 |
27 |
30 |
|
4 |
8 |
12 |
16 |
20 |
24 |
28 |
32 |
36 |
40 |
|
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
|
6 |
12 |
18 |
24 |
30 |
36 |
42 |
48 |
54 |
60 |
|
7 |
14 |
21 |
28 |
35 |
42 |
49 |
56 |
63 |
70 |
|
8 |
16 |
24 |
32 |
40 |
48 |
56 |
64 |
72 |
80 |
|
9 |
18 |
27 |
36 |
45 |
54 |
63 |
72 |
81 |
90 |
|
10 |
20 |
30 |
40 |
50 |
60 |
70 |
80 |
90 |
100 |
|
Za oblikovanje ispisa koriste se ugnježđene petlje. Vanjska petlja (kontrolna varijabla red) oblikuje ispis 10 redaka, a unutarnja (kontrolna varijabla stup) za svaki redak, 10 stupaca. Vrijednosti varijabli red i stup mijenjaju se ovako:
|
red |
stup |
|
1 |
1 |
|
1 |
2 |
|
1 |
3 |
|
... |
... |
|
1 |
10 |
|
2 |
1 |
|
2 |
2 |
|
... |
... |
|
2 |
10 |
|
... |
... |
|
10 |
10 |
Da bi ispis bio oblikovan u pravilnim stupcima, rabi se manipulator (operator za rukovanje ispisom) setw(int). On određuje koliki će se prostor predvidjeti za ispis podatka koji slijedi u izlaznom toku. Svi su manipulatori definirani u biblioteci iomanip, pa tu biblioteku treba uključiti naredbom include.
U unutarnjoj se petlji ispisuje umnožak trenutnih vrijednosti vanjske i unutarnje petlje (red*stup)
Napomena: za svaku vrijednost kontrolne varijable vanjske petlje (red) izvodi se 10 puta cjelokupna unutarnja petlja (stup).
Rješenje:
|
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int stup,red;
for(red=1;red<=10;red++)
{
for(stup=1;stup<=10;stup++)
{
cout<<setw(7)<<red*stup;
}
cout<<endl;
}
return 0;
}
|
Rezultat:
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
|
3 |
6 |
9 |
12 |
15 |
18 |
21 |
24 |
27 |
30 |
|
4 |
8 |
12 |
16 |
20 |
24 |
28 |
32 |
36 |
40 |
|
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
|
6 |
12 |
18 |
24 |
30 |
36 |
42 |
48 |
54 |
60 |
|
7 |
14 |
21 |
28 |
35 |
42 |
49 |
56 |
63 |
70 |
|
8 |
16 |
24 |
32 |
40 |
48 |
56 |
64 |
72 |
80 |
|
9 |
18 |
27 |
36 |
45 |
54 |
63 |
72 |
81 |
90 |
|
10 |
20 |
30 |
40 |
50 |
60 |
70 |
80 |
90 |
100 |
|
|
|
|