Problem z if
Ostatnio zmodyfikowano 2014-06-22 19:04
Vmax96 Temat założony przez niniejszego użytkownika |
Problem z if » 2014-06-22 17:20:11 #include <iostream> #include <limits> int main() { unsigned int liczba; do { std::cout << "Podaj liczbe dodatnia: "; std::cin >> liczba; std::cin.fail(); if( std::cin.fail() == 1 ) { std::cout << "Podales litere zamiast cyfry" << std::endl; if( liczba < 0 ) { std::cout << "Podales liczbe ujemna" << std::endl; } } std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } while( liczba >= 0 ); std::cout << "Podana liczba to: " << liczba << std::endl; return 0; } Ma to działać następująco: - Program wyświetli liczbę tylko wtedy gdy będzie ona większa od zera. W innym wypadku (litera zamiast cyfry/liczby, liczba/cyfra ujemna) program pokaże błąd. Odpalam program wpisuję "aaaa" zamiast cyfry i pokazuje: Podales litere zamiast cyfry Wszystko zgodnie z planem. Inaczej jest gdy podaję cyfrę ujemną. Nie ma komunikatu. |
|
Loodwin |
» 2014-06-22 17:27:05 |
|
killjoy |
» 2014-06-22 17:31:08 @UP Nie dość, że mylisz inicjacje z inicjalizacją, to gadasz głupoty. Wczytanie liczby ujemnej, poprzez cin, do typu danych z etykietą unsigned , nie ustawia flagi błędu w strumieniu. |
|
Glazus |
» 2014-06-22 17:39:35 Jak dobrze rozumiem to osiągnąć to co próbujesz osiągnąć możesz po takich poprawkach: #include <iostream> #include <limits> int main() { int liczba; do { std::cout << "Podaj liczbe dodatnia: "; std::cin >> liczba; std::cin.fail(); if( std::cin.fail() == 1 ) { std::cout << "Podales litere zamiast cyfry" << std::endl; } else if( liczba < 0 ) { std::cout << "Podales liczbe ujemna" << std::endl; } std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } while( liczba <= 0 ); std::cout << "Podana liczba to: " << liczba << std::endl; return 0; } |
|
Monika90 |
» 2014-06-22 18:05:11 |
|
killjoy |
» 2014-06-22 19:04:54 Odnosiłem się do postu autora, ale @Monika90 masz rację jedna flaga kompilatora w tym przypadku -stdlib=libc++, może zmienić działanie programu, czego ja nie wziąłem pod uwagę :P |
|
« 1 » |