Programska petlja for
2. Ugnježđivanje petlje for
2.1. Primjeri
Primjer 1.
Tijekom izvođenja niza naredbi:
int i,j;for(i=0;i<=6;i+=5)
for(j=1;j<=7;j+=3)
printf("\n%d, %d",i, j);
vrijednosti varijabli i i j mijenjaju se ovako:
Za i = 0 varijabla j poprima vrijednosti: 1, 4 i 7 te se na zaslonu ispisuju sljedeće vrijednosti:
0, 10, 4
0, 7
Tada unutarnja petlja (po j) staje jer je uvjet lažan. Povećava se vrijednost kontrolne varijable i (i= 5), pa se ponovno izvršava unutarnja petlja i poprima vrijednosti: 1, 4 i 7.
Ispis na zaslonu je ovaj:
5, 15, 4
5, 7
Sljedeće povećanje kontrolne varijable i je na 10 pa uvjet nije istinit, što znači da prestaje izvršavanje petlji.
Primjer 2.
Napišite program koji će na zaslonu ispisati sve Pitagorine brojeve u intervalu od 2 do 50. Uz taj podatak, program treba ispisati i koliko Pitagorinih brojeva ima u danom intervalu.
/* Pitagorini brojevi su uređene trojke brojeva (a, b, c) za koje vrijedi da je a2 + b2 = c2) */
Rješenje
#include<stdio.h>#include<math.h>
int main()
{
int a,b,c,koliko=0;
for(a=2;a<=50;a++)
for(b=2;b<=50;b++)
for(c=2;c<=50;c++)
if (pow(a,2)+pow(b,2)==pow(c,2))
{
printf("\n%d, %d, %d", a,b,c);
koliko++;
}
printf("\nIma ih %d", koliko);
return 0;
}
Zamijetite da će taj program ispisati ukupno 40 Pitagorinih trojki zato što će, primjerice, ispisati i trojku (3, 4, 5), ali i trojku (4, 3, 5). Razmislite, što treba promijeniti u programu da bi ispisivao Pitagorine trojke „bez ponavljanja” (neuređene trojke).
Napomena: Postoje starije inačice Dev C++-a u kojim ovaj program neće raditi ispravno zbog pogreške u funkciji pow(). Da biste to izbjegli upotrijebite računsku operaciju množenje.