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

P01R08 - co złego w kodzie cin.

Ostatnio zmodyfikowano 2019-11-24 11:25
Autor Wiadomość
KazikGajek
Temat założony przez niniejszego użytkownika
P01R08 - co złego w kodzie cin.
» 2019-11-22 23:06:55
C/C++
{
    float a;
    float b;
    float c;
    bool aczyblad = cin.fail();
    bool bczyblad = cin.fail();
    bool cczyblad = cin.fail();
    cout << "Podaj pierwsza liczbe:" << endl;
    cin >> a;
    cin.clear();
    cout << "Podaj druga liczbe" << endl;
    cin >> b;
    cin.clear();
    cout << "Podaj trzecia liczbe" << endl;
    cin >> c;
    cin.clear();
    cout << "Twoje liczby to:" << endl;
    cout << a << " Czy blad? " << aczyblad << endl;
    cout << b << " Czy blad? " << bczyblad << endl;
    cout << c << " Czy blad? " << cczyblad << endl;
    return 0;
}
Po skompilowaniu i wpisaniu za a bądź b bądź c litery albo innego znaku który nie jest liczbą program ignoruje wszystkie dalsze instrukcje, przechodzi do wypisania koncowych liczb i zwraca 0 tam gdzie nie była wprowadzona jeszcze wartość, dlaczego tak się dzieje?
P-175644
pekfos
» 2019-11-22 23:38:11
» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja, "Czyszczenie zawartości strumienia wejściowego".
P-175645
KazikGajek
Temat założony przez niniejszego użytkownika
» 2019-11-23 22:00:00
no okej juz jest git, ale teraz mam taki problem ze niewazne czy dobrze wpisze czy zle zawsze przy koncowym wypisaniu liczb w miejscu cin.fail() pokazane jest 0, co jest oczywiście nie prawdą ponieważ wpisałem jakieś literki w miejsce np. integeru b.
P-175650
pekfos
» 2019-11-23 22:55:59
A kod?
P-175651
KazikGajek
Temat założony przez niniejszego użytkownika
» 2019-11-23 23:04:40
C/C++
{
    float b;
    float c;
    float a;
    bool bczyblad = cin.fail();
    bool cczyblad = cin.fail();
    bool aczyblad = cin.fail();
    cout << "Podaj pierwsza liczbe:" << endl;
    cin >> a;
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "Podaj druga liczbe" << endl;
    cin >> b;
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "Podaj trzecia liczbe" << endl;
    cin >> c;
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "Twoje liczby to:" << endl;
    cout << a << " Czy blad? " << aczyblad << endl;
    cout << b << " Czy blad? " << bczyblad << endl;
    cout << c << " Czy blad? " << cczyblad << endl;
    return 0;
}
P-175652
pekfos
» 2019-11-23 23:19:26
Kolejność wykonywania operacji ma znaczenie. Sprawdzasz błędy zanim cokolwiek ma szansę się wydarzyć.
P-175653
KazikGajek
Temat założony przez niniejszego użytkownika
» 2019-11-23 23:51:10
Czyli który fragment kodu jest zły bo dalej nie rozumiem.

//
tak o zrobiłem i chyba jest git ale nie jestem pewny
C/C++
{
    float b;
    float c;
    float a;
    cout << "Podaj pierwsza liczbe:" << endl;
    cin >> a;
    bool aczyblad = cin.fail();
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "Podaj druga liczbe" << endl;
    cin >> b;
    bool bczyblad = cin.fail();
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "Podaj trzecia liczbe" << endl;
    cin >> c;
    bool cczyblad = cin.fail();
    cin.clear();
    cin.ignore( 1000, '\n' );
    cout << "Twoje liczby to:" << endl;
    cout << a << " Czy blad? " << aczyblad << endl;
    cout << b << " Czy blad? " << bczyblad << endl;
    cout << c << " Czy blad? " << cczyblad << endl;
    return 0;
}
P-175654
pekfos
» 2019-11-24 11:25:01
Jest dobrze.
P-175656
« 1 »
  Strona 1 z 1