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

[Rozdział 17] Problem z zadaniem 1.

Ostatnio zmodyfikowano 2015-09-30 00:05
Autor Wiadomość
bojo240
Temat założony przez niniejszego użytkownika
[Rozdział 17] Problem z zadaniem 1.
» 2015-09-29 23:23:34
Witam.
Po paromiesięcznej przerwie wróciłem do kursu c++ i mam problem z pewnym zadaniem.
Jego treść:

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.
C/C++
C/C++
#include <iostream>
int wczytajLiczbe()
{
    //TODO: tu Twój kod
}

int main()
{
    std::cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}
Mój kod:

C/C++
#include <iostream>
using namespace std;
int wczytajliczbe()
{
    int a;
    do
    {
        cin.clear();
        cin.sync();
        cin >> a;
        if( a = cin.fail() )
        {
            cout << "Podales niepoprawna wartosc. Podaj liczbe: ";
        }
    } while( a = cin.fail() );
   
    return a;
}
int main()
{
    cout << "Podaj liczbe: ";
    int liczba = wczytajliczbe();
    cout << "Podales liczbe: " << liczba << endl;
    return 0;
}

Nie jestem w stanie zmusic programu do wypisania podanej liczby.
Prosze o wskazówki.
P-138020
bojo240
Temat założony przez niniejszego użytkownika
» 2015-09-30 00:01:01
Okej, zapomnialem o wprowadzeniu zmiennej bool ^.^
Zamykam.
P-138021
carlosmay
» 2015-09-30 00:05:41
a = std::cin.fail()
 Źle napisany warunek.
std::cin.fail()
 samo wystarczy do sprawdzenia czy obiekt
std::cin
 nie jest w stanie błędu.
Metoda
std::cin.fail()
 zwraca wartość true (1) lub false (0) i jedną z tych wartości przypisujesz do zmiennej 'a' w warunku,
ale pętla kończy działanie gdy metoda ta zwraca false, więc 'a' za każdym razem jest równe 0;
P-138022
« 1 »
  Strona 1 z 1