Obsługa strumienia wejściowego - zadanie domowe
Ostatnio zmodyfikowano 2020-06-05 14:01
Adzianu Temat założony przez niniejszego użytkownika |
Obsługa strumienia wejściowego - zadanie domowe » 2020-06-02 16:39:05 Witam. Mam problem z zadaniem domowym z lekcji podanej w tytule. # include <iostream>
int main() { using namespace std; float liczba1; float liczba2; float liczba3; bool aCzyBlad = cin.fail(); bool bCzyBlad = cin.fail(); bool cCzyBlad = cin.fail(); cout << "podaj liczbe 1 - "; cin >> liczba1; cin.clear(); cin.ignore( 1000, '\n' ); cout << "podaj liczbe 2 - "; cin >> liczba2; cin.clear(); cin.ignore( 1000, '\n' ); cout << "podaj liczbe 3 - "; cin >> liczba3; cin.clear(); cin.ignore( 1000, '\n' ); cout << endl; cout << "liczba pierwsza to " << liczba1 << " - blad? " << aCzyBlad << endl; cout << "liczba druga to " << liczba2 << " - blad? " << bCzyBlad << endl; cout << "liczba trzecia to " << liczba3 << " - blad? " << cCzyBlad << endl; return 0; }
Tak wygląda kod mojego programu. Problemem jest już późniejsza kompilacja. Wpisuję dane, które zostały podane przykładowo w zadaniu domowym, ale po kompilacji nawet jeśli są one błędne to kompilator pokazuje "blad? - 0". podaj liczbe 1 - 13.3 podaj liczbe 2 - tak 123 podaj liczbe 3 - 33.22nie
liczba pierwsza to 13.3 - blad? 0 liczba druga to 0 - blad? 0 liczba trzecia to 33.22 - blad? 0
Gdzie w kodzie popełniłem błąd? Bo ja sam nie potrafię go znaleźć. Pozdrawiam |
|
pekfos |
» 2020-06-02 18:17:42 Program wykonuje się dosłownie tak, jak go zapiszesz. Sprawdzasz błędy zanim zrobisz cokolwiek, co może wywołać błąd. |
|
Adzianu Temat założony przez niniejszego użytkownika |
» 2020-06-02 18:47:58 Ok, rozumiem. Chodzi mi o to dlaczego jak podaję błędne dane zamiast liczby drugiej to program zamiast pokazać, że "blad? 1" pokazuje jakby go nie było, czyli "blad? 0". Bo rozumiem, że 0 i 1 odpowiadają true i false. |
|
pekfos |
» 2020-06-03 11:43:58 Ok, rozumiem. Chodzi mi o to dlaczego jak podaję błędne dane zamiast liczby drugiej to program zamiast pokazać, że "blad? 1" pokazuje jakby go nie było, czyli "blad? 0" |
Po co wtedy piszesz, że rozumiesz? Sprawdzasz błędy w złym miejscu. Każdy z tych trzech testów ma tylko jedno możliwe miejsce w kodzie, w którym będzie działać. Przykład masz podany w lekcji kursu, wraz ze szczegółowym wyjaśnieniem. Zmienne same z siebie nie zmieniają wartości, więc próbując sprawdzić błędy na początku, próbujesz odczytać wynik przyszłych operacji. |
|
dominicuss |
» 2020-06-05 14:01:39 Chłopak nie chce ochrzanu tylko rozwiązania...
po każdym: cin >> twojaZmiennaLiczbowa; if(cin.fail()) { tu jakiś tekst z błędem, ogólnie wartość będzie sprawdzona tylko raz więc jak chcesz żeby program pytał do skutku to musisz umieścić ten kawałek kodu w pętli }
a ty sprawdzasz cin.fail() na samym początku kodu zanim cokolwiek wprowadziłeś do zmiennej i to nie ma sensu :) |
|
« 1 » |