[Kurs C++, Lekcja 9] Jak sprawdzić, czy dane wejściowe były poprawne?
Ostatnio zmodyfikowano 2011-08-10 21:29
mati640 Temat założony przez niniejszego użytkownika |
[Kurs C++, Lekcja 9] Jak sprawdzić, czy dane wejściowe były poprawne? » 2011-08-10 15:32:45 Witam, mam problem z zadaniem domowym #include <iostream> #include <cstdio> int main() { float a; bool b; float c; bool d; bool e; d = std::cin.good(); e = std::cin.fail(); std::cin.clear(); std::cin.sync(); std::cout << "Podaj pierwsza liczbe: "; std::cin >> a; std::cout << "Czy udalo sie wczytac?" << std::cin.good() << std::endl; std::cout << "Czy cos nawalilo?" << std::cin.fail() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Podaj druga liczbe: "; std::cin >> b; std::cout << "Czy udalo sie wczytac?" << std::cin.good() << std::endl; std::cout << "Czy cos nawalilo?" << std::cin.fail() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Podaj trzecia liczbe: "; std::cin >> c; std::cout << "Czy udalo sie wczytac?" << std::cin.good() << std::endl; std::cout << "Czy cos nawalilo?" << std::cin.fail() << std::endl; std::cout << "Pierwsza liczba: " << a << " Wczytano? " << d << std::endl; std::cout << "Druga liczba: " << b << " Wczytano? " << e << std::endl; std::cout << "Trzecia liczba: " << c << " Wczytano? " << d << std::endl; return 0; }
- to pokazuje program po wpisaniu wszystkiego Chodzi mi o to, że na końcu gdzie podane jest "Wczytano?" to ja myślę, że automatycznie powinno pojawiać sie 1 lub 0, 1 odpowiada za dobrze 0 za źle. Ja to zrobiłem w sposób manualny. I gdybym wpisał inne liczby. to już by nie zadziałało. Proszę o pomoc, aby ktoś napisał prawidłowy kod do tej funkcji czy prawidłowo wczytano. Z góry dzięki. |
|
SeaMonster131 |
» 2011-08-10 15:47:29 Daj 3 zmienne bool, i po każdym wczytaniu liczby spr czy udało się ją wczytaj i wtedy przypisz odpowiednią wartość do tych zmiennych (dla każdej liczby jedna zmienna, czyli 3 zmienne bool). |
|
mati640 Temat założony przez niniejszego użytkownika |
» 2011-08-10 15:58:01 Wyszło mi przez przypadek, znalazłem błąd usunąłem go i nadal nie wychodzi, nie wiem czy dobrze robię to co napisałeś.
|
|
SeaMonster131 |
» 2011-08-10 21:12:37 To pokaż aktualny kod :) |
|
mati640 Temat założony przez niniejszego użytkownika |
» 2011-08-10 21:27:26 Kręciłem trochę w kodzie, ale nic nie wychodziło i zostawiłem tak:
Tylko to nadal jest źle.
#include <iostream> #include <cstdio> main() { float a; float b; float c; bool d; bool e; bool f; std::cin.clear(); std::cin.sync(); std::cout << "Podaj pierwsza liczbe: "; std::cin >> a; std::cout << "Czy udalo sie wczytac?" << std::cin.good() << std::endl; std::cout << "Czy cos nawalilo?" << std::cin.fail() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Podaj druga liczbe: "; std::cin >> b; std::cout << "Czy udalo sie wczytac?" << std::cin.good() << std::endl; std::cout << "Czy cos nawalilo?" << std::cin.fail() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Podaj trzecia liczbe: "; std::cin >> c; std::cout << "Czy udalo sie wczytac?" << std::cin.good() << std::endl; std::cout << "Czy cos nawalilo?" << std::cin.fail() << std::endl; std::cout << "Pierwsza liczba: " << a << " Wczytano? " << d << std::endl; std::cout << "Druga liczba: " << b << " Wczytano? " << e << std::endl; std::cout << "Trzecia liczba: " << c << " Wczytano? " << f << std::endl; return 0; }
|
|
SeaMonster131 |
» 2011-08-10 21:29:56 Powiedziałem wyraźnie, żebyś spr czy udało sie wczytać liczbe po każdym wpisaniu.. Np: float a; bool liczba_a;
cin >> a; liczba_a = cin.good(); |
|
« 1 » |