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

Poziom 2.17 (zad.1) prośba o sprawdzenie

Ostatnio zmodyfikowano 2018-09-14 17:48
Autor Wiadomość
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

C/C++
#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;
}
P-171988
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.
P-171989
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.
P-171991
YooSy
» 2018-07-29 18:49:11
C/C++
int GetNumber() {
    int num;
    while( !( std::cin >> num ) ) {
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    }
    return num;
}
P-171992
Pawelcio
Temat założony przez niniejszego użytkownika
» 2018-09-14 17:48:38
Czy o to chodziło?
C/C++
#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;
}
P-172316
« 1 »
  Strona 1 z 1