Poziom 2.17 (zad.1) prośba o sprawdzenie
Ostatnio zmodyfikowano 2018-09-14 17:48
Pawelcio Temat założony przez niniejszego użytkownika |
Poziom 2.17 (zad.1) prośba o sprawdzenie » 2018-07-29 17:27:01 Witam,czy mógłby ktoś zerknąć na mój kod i powiedzieć, czy tak powinno wyglądać rozwiązanie tego zadania? Czy są rzeczy,które można by lepiej zapisać? Wiadomo nigdy nie ma tak, żeby nie mogło być inaczej ;p Dzięki #include <iostream> int wczytajLiczbe() { int a; bool correct; std::cin >> a; correct = std::cin.good(); std::cin.clear(); std::cin.sync(); if( correct == 0 ) { do { std::cout << "Podaj inna liczbe: "; std::cin >> a; correct = std::cin.good(); std::cin.clear(); std::cin.sync(); } while( correct == 0 ); } return a; }
int main() { std::cout << "Podaj liczbe: "; int liczba = wczytajLiczbe(); std::cout << "Podales liczbe: " << liczba << std::endl; return 0; }
|
|
YooSy |
» 2018-07-29 18:13:02 Użycie std::cin.sync() jest błędem. Użyj std::cin.ingonre() . Poza tym czyszczenie strumienia wykonuj gdy std::cin jest w stanie błędu, a nie zawsze. Unikniesz niepotrzebnie powtarzanego kodu. |
|
Pawelcio Temat założony przez niniejszego użytkownika |
» 2018-07-29 18:34:12 Ok wyrzuciłem cin.sync(), ale nie rozumiem z tym czyszczeniem, program działa poprawnie tylko, jeśli mam napisane tak jak dotychczas. |
|
YooSy |
» 2018-07-29 18:49:11 int GetNumber() { int num; while( !( std::cin >> num ) ) { std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } return num; } |
|
Pawelcio Temat założony przez niniejszego użytkownika |
» 2018-09-14 17:48:38 Czy o to chodziło? #include <iostream> #include <limits> int GetNumber() { int num; bool correct; std::cin >> num; correct = std::cin.good(); while( !( std::cin >> num ) ) { std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); std::cout << "Podaj inna liczbe: "; } return num; }
int main() { std::cout << "Podaj liczbe: "; int liczba = GetNumber(); std::cout << "Podales liczbe: " << liczba << std::endl; return 0; }
|
|
« 1 » |