Przykłady praktycznych zastosowań pętli do...while
w C++
Pętla do...while
sprawdza się w sytuacjach, gdy blok kodu musi się wykonać co najmniej raz. Oto kilka praktycznych przykładów jej zastosowania:
1. Wprowadzanie danych z walidacją
Pętla do...while
jest idealna, gdy musisz poprosić użytkownika o dane i sprawdzić ich poprawność.
Przykład: Prośba o podanie liczby z określonego zakresu
#include <iostream>
using namespace std;
int main() {
int liczba;
do {
cout << "Podaj liczbę od 1 do 10: ";
cin >> liczba;
if (liczba < 1 || liczba > 10) {
cout << "Błędna wartość! Spróbuj ponownie." << endl;
}
} while (liczba < 1 || liczba > 10);
cout << "Podano poprawną liczbę: " << liczba << endl;
return 0;
}
✅ Zaleta: Nawet jeśli użytkownik poda poprawną liczbę za pierwszym razem, pętla i tak wyświetli komunikat co najmniej raz.
2. Menu z opcjami
Pętla do...while
świetnie nadaje się do obsługi menu, które powinno się wyświetlać do momentu wybrania opcji zakończenia.
Przykład: Menu wyboru
#include <iostream>
using namespace std;
int main() {
int opcja;
do {
cout << "\n--- MENU ---\n";
cout << "1. Dodaj\n";
cout << "2. Odejmij\n";
cout << "3. Pomnóż\n";
cout << "4. Zakończ\n";
cout << "Wybierz opcję: ";
cin >> opcja;
switch (opcja) {
case 1: cout << "Dodawanie...\n"; break;
case 2: cout << "Odejmowanie...\n"; break;
case 3: cout << "Mnożenie...\n"; break;
case 4: cout << "Koniec programu.\n"; break;
default: cout << "Niepoprawna opcja! Spróbuj ponownie.\n";
}
} while (opcja != 4);
return 0;
}
✅ Zaleta: Menu wyświetla się co najmniej raz i pozwala użytkownikowi wielokrotnie wybierać opcje.
3. Gra „Zgadnij liczbę”
Pętla do...while
sprawdza się w grach, w których gracz musi zgadywać odpowiedź do momentu jej odgadnięcia.
Przykład: Zgadnij liczbę
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(0)); // Losowe liczby za każdym razem
int liczba = rand() % 100 + 1; // Losuje liczbę od 1 do 100
int strzal;
cout << "Zgadnij liczbę z zakresu 1-100!" << endl;
do {
cout << "Podaj liczbę: ";
cin >> strzal;
if (strzal < liczba) {
cout << "Za mało!" << endl;
} else if (strzal > liczba) {
cout << "Za dużo!" << endl;
}
} while (strzal != liczba);
cout << "Gratulacje! Odgadłeś liczbę: " << liczba << endl;
return 0;
}
✅ Zaleta: Gra wymusza co najmniej jedną próbę zgadywania.
4. Potwierdzenie zamknięcia programu
Pętla do...while
jest przydatna w sytuacjach, gdy użytkownik musi potwierdzić zakończenie programu.
Przykład: Potwierdzenie wyjścia
#include <iostream>
using namespace std;
int main() {
char decyzja;
do {
cout << "Czy na pewno chcesz zakończyć program? (t/n): ";
cin >> decyzja;
} while (decyzja != 't' && decyzja != 'T');
cout << "Program zakończony." << endl;
return 0;
}
✅ Zaleta: Nawet przy przypadkowym uruchomieniu program wymusi potwierdzenie wyjścia.
5. Obsługa błędnych danych wejściowych
Pętla do...while
dobrze radzi sobie z przypadkami, gdy dane wejściowe mogą być błędne.
Przykład: Prośba o liczbę całkowitą
#include <iostream>
using namespace std;
int main() {
int liczba;
do {
cout << "Podaj liczbę całkowitą: ";
cin >> liczba;
if (cin.fail()) {
cin.clear(); // Kasowanie błędu
cin.ignore(1000, '\n'); // Usunięcie niepoprawnych danych
cout << "To nie jest liczba! Spróbuj ponownie." << endl;
}
} while (cin.fail());
cout << "Poprawna liczba: " << liczba << endl;
return 0;
}
✅ Zaleta: Program nie zawiesi się na błędnym wejściu (np. wpisaniu litery zamiast liczby).
Podsumowanie
Pętla do...while
sprawdza się, gdy:
✅ Chcesz zapewnić, że blok kodu wykona się co najmniej raz.
✅ Realizujesz funkcje wymagające powtarzających się działań (menu, gry, pobieranie danych).
✅ Musisz walidować dane wejściowe użytkownika.