Programowanie i algorytmy

Zagnieżdżone instrukcje iteracyjne

powrót

Zagnieżdżenie pętli, podobnie jak instrukcji warunkowej, polega na wywołaniu jednej pętli wewnątrz drugiej. Oznacza to, że na jedną iterację pętli zewnętrznej, zostanie wykonany cały przebieg pętli wewnętrznej. Instrukcje iteracyjne w C++ można dowolnie zagnieżdżać. Im więcej zagnieżdżeń tym większa złożoność obliczeniowa algorytmu.

Zagnieżdżenie pętli for

for(inicjacja; warunki; operacje) // pętla zewnętrzna

{

// instrukcje pętli zewnętrznej

for(inicjacja; warunki; operacje) // pętla wewnętrzna

{

//instrukcje powtarzane przez pętlę wewnętrzną

}

// instrukcje pętli zewnętrznej

}

 

 

Przykład. Napisz program, który wyświetli wszystkie liczby trzycyfrowe o niepowtarzających się cyfrach oraz określi ilość takich liczb.

Rozwiązanie z wykorzystaniem zagnieżdżenia pętli for

#include <cstdlib>
#include <iostream>


using namespace std;

int main(int argc, char *argv[])
{
int ile = 0; //zmienna podliczający ilość liczb

for(int i=1; i<=9; i++) //pętla odpowiedzialna za cyfrę setek

for(int j=0; j<=9; j++) //pętla odpowiedzialna za cyfrę dziesiatek

for(int k=0; k<=9; k++) //pętla odpowiedzialna za cyfrę jedności

if(i!=j && i!=k && j!=k)
{

cout<<i<<j<<k<<" ";
ile++;

}


cout<<endl<<"Liczb trzycyfrowych o niepowtarzających się cyfrach jest "<<ile<<endl;
system("pause");


return 0;
}

 

Rozwiązanie z wykorzystaniem zagnieżdżenia pętli while

#include <cstdlib>
#include <iostream>


using namespace std;

int main(int argc, char *argv[])
{
int ile = 0, i = 1, j = 0, k = 0; //zmienna podliczający ilość liczb

while(i<=9) //pętla odpowiedzialna za cyfrę setek
{

while(j<=9) //pętla odpowiedzialna za cyfrę dziesiatek
{

while(k<=9) //pętla odpowiedzialna za cyfrę jedności
{

if(i!=j && i!=k && j!=k)
{

cout<<i<<j<<k<<" ";
ile++;

}
k++;

}
k = 0;
j++;

}
j = 0;
i++;

}
cout<<endl<<"Liczb trzycyfrowych o niepowtarzających się cyfrach jest "<<ile<<endl;
system("pause");

return 0;
}