c++ zadanie z petla do while

0

Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu:

  1. Podaj liczbę
  2. Jeżeli błąd, wróć do kroku 1.
  3. Wypisz liczbę, która została podana.

mój program:


#include <iostream>

using namespace std;

int main()
{
    int liczba;
    bool l;
    cout<<"Podaj liczbe"<<endl;
    do
    {

        cin>>liczba;
        l = cin.fail();
        if(l==0)
        {
           cout<<"Podana liczba to: "<<liczba<<l<<endl;

        }
        else
        {
            cout<<"Blad! Podaj poprawna liczbe: "<<endl;
            
        }

    } while(l==true);




    return 0;
}

program ma zaczynać się od początku kiedy wykryje ze podaliśmy zła liczbę (np. literkę "a")
nie wiem jak to zrobic
zmienna L w cout jest po to żeby sprawdzić czy cin.fail(); dobrze działa

2

Jeśli zmienna jest logiczna (typu bool) to nie porównuj jej z integerem
Niestety, to jest słabość C/C++, że takie chocki klocki są dozwolone, w rozsądnych językach są błędem.

1
        cout<<"Podaj liczbe: ";
        if(cin>>liczba) cout<<"Podana liczba to: "<<liczba<<endl;
        else
        {
            cout<<"Blad!"<<endl;
            cin.clear(); // bez tego cin już nic nie wczyta
            while(cin.get()!='\n') {} // wywalamy z bufora ten błąd
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1