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.
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
}
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 <iostream>
using namespace std;
int main()
{
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;
return 0;
}
Rozwiązanie z wykorzystaniem zagnieżdżenia pętli while
#include <iostream>
using namespace std;
int main()
{
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;
return 0;
}