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 » |