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, 1
      0, 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, 1
     5, 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.