Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

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żaie pęti 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 1

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;
}