Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lekcja 17 zadanie 1 pętla nie działa

Ostatnio zmodyfikowano 2015-01-09 21:22
Autor Wiadomość
Perliks
Temat założony przez niniejszego użytkownika
Lekcja 17 zadanie 1 pętla nie działa
» 2015-01-09 20:53:00
Witam mam problem z zadaniem z lekcji nr 17.
Brzmi ono : Napisz funkcję, która będzie wczytywała liczby ze standardowego wejścia i zwracała wczytaną wartość. Funkcja ma zagwarantować, że zwracana liczba zawsze jest poprawna. Oznacza to, że funkcja będzie musiała pytać użytkownika o wprowadzenie liczby dopóki nie poda poprawnej.
Otóż chodzi o to , że pętla mimo wpisania np znaku "a" kontynuuje działanie zamiast wrócić do ponownego podania liczby. Tekst z ifa wyświetla się poprawnie. W czym leży problem? Z góry dziękuje za wszystkie rady! Pozdrawiam!

int wczytajLiczbe()
{
int a;
bool niepoprawna;
do
{
cout << "Podaj liczbe : ";
cin >> a;
niepoprawna = cin.fail();
if (niepoprawna)
cout << "Podales nieprawidlowa liczbe!" << endl;
return a;
} while (niepoprawna);
}

int main()
{
int liczba = wczytajLiczbe();
cout << "Podales liczbe: " << liczba << endl;
system("pause");
return 0;
}
P-124521
lectre
» 2015-01-09 21:00:13
Instrukcja return powoduje natychmiastowy koniec funkcji i zwrócenie wartości a.

C/C++
int wczytajLiczbe()
{
    int a;
    bool niepoprawna;
    do
    {
        cout << "Podaj liczbe : ";
        cin >> a;
        niepoprawna = cin.fail();
        cin.clear(); // chyba zapomniales
        cin.sync(); // czyscic strumien
        if( niepoprawna )
             cout << "Podales nieprawidlowa liczbe!" << endl;
       
    }
    while( niepoprawna );
   
    return a; // return a dopiero po pętli, poniewaz return oznacza jednoczesnie koniec funkcji.
}

int main()
{
    int liczba = wczytajLiczbe();
    cout << "Podales liczbe: " << liczba << endl;
    system( "pause" );
}
P-124522
Perliks
Temat założony przez niniejszego użytkownika
» 2015-01-09 21:14:33
Ok problem rozwiązany dzięki bardzo za naprowadzenie na błąd :) Dodam jeszcze ze w warunku pętli też był babol:)
P-124524
lectre
» 2015-01-09 21:22:28
Czemu babol?
P-124526
« 1 »
  Strona 1 z 1