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

Obsługa strumienia wejściowego - zadanie domowe

Ostatnio zmodyfikowano 2020-06-05 14:01
Autor Wiadomość
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.

C/C++
# 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
P-176949
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.
P-176950
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.
P-176951
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.
P-176954
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 :)
P-176968
« 1 »
  Strona 1 z 1