W instrukcjach iteracyjnych słowo kluczowe break bezwarunkowo przerywa wykonwyanie się pętli. Jest to proste rozwiązanie i ma zastosowanie w sytuacji, gdy dalsze powtarzanie instrukcji w pętli, nie są już potrzebne. Prześledźmy przykład.
Napisz program, który stwierdzi, czy podana liczba naturalna dodatnia n posiada co najmniej jeden dzielnik z zadanego na wejściu przedziału $$[2; \sqrt{n}]$$
Rozwiązanie
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
unsigned int n, i;
cout<<"Podaj liczbę: ";
cin>>n;
int pierw = sqrt(n);
for(i = 2; i<=pierw; i++)
if(n%i==0) //jeśli znajdziemy dzielnik, to nie ma sensu dalszego wykonywania działania pętli
break; //przerwanie działania pętli for
if(i>pierw) //jesli licznik "i" przekroczył wartość zmiennej "pierw", tzn., że nie znalazł pierwiastka
cout<<"Liczba "<<n<<" nie posiada dzielników z zadanego przedziału"<<endl;
else
cout<<"Liczba "<<n<<" posiada dzielniki z zadanego przedziału"<<endl;
return 0;
}
Słowo kluczowe continue, powoduje wznowienie działania pętli i zaprzestanie wykonywania dalszych instrukcji dla danego powtórzenia. Stosuje się je w przypadku, gdy w danej iteracji pętli nie ma konieczności wykonania instrukcje, które występują po słowie kluczowym continue, ale znajdują się w bloku danej pętli. Popatrzmy na przykład:
Napisz program, który wyświetli wszystkie trzycyfrowe palindromy, w których środkowa cyfra jest równa zero lub pięć.
Rozwiązanie
#include <iostream>
using namespace std;
int main()
{
for(int i = 100; i<1000; i++)
{
if((i/10)%10 != 0 && (i/10)%10 != 5) //sprawdzenie czy środkowa cyfra jest różna od 0 i od 5
continue; // jeśli tak, to nie ma sensu wykonywania dalszych instrukcji dla danej iteracji
if(i%10 == i/100)//sprawdzenie, czy "i" jest palindromem
cout<<i<<" ";
}
cout<<endl;
return 0;
}