Kurs C++: Pętle i Iteracje

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.