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

[Lekcja 9] cin.sync - flagi błędów się nie czyszczą

Ostatnio zmodyfikowano 2013-05-26 15:56
Autor Wiadomość
Kanabinol
Temat założony przez niniejszego użytkownika
[Lekcja 9] cin.sync - flagi błędów się nie czyszczą
» 2013-05-26 15:17:32
Witajcie ludzie :)

mam problem , otóż w 9 lekcji napotkałem problem , najpierw może dam kod programu :)

C/C++
#include <cstdio>
#include <iostream>
int main()
{
    /*Zmienne*/
    float a;
    int b;
    float c;
    bool zmienna1 = std::cin.good();
    bool zmienna2 = std::cin.good();
    bool zmienna3 = std::cin.good();
   
   
   
    /*Kod*/
    std::cout << "Podaj Pierwsza Liczbe : ";
    std::cin.clear();
    std::cin.sync();
    std::cin >> a; zmienna1;
   
    std::cout << "Podaj Druga Liczbe : ";
    std::cin.clear();
    std::cin.sync();
    std::cin >> b; zmienna2;
   
    std::cout << "Podaj Trzecia Liczbe : ";
    std::cin.clear();
    std::cin.sync();
    std::cin >> c; zmienna3;
   
    std::cout << "Liczba Pierwsza Wynosi : " << a << "Wczytano? " << zmienna1 << std::endl;
    std::cout << "Liczba Druga Wynosi : " << b << "Wczytano? " << zmienna2 << std::endl;
    std::cout << "Liczba Trzecia Wynosi : " << c << "Wczytano? " << zmienna3 << std::endl;
    return 0;
}

w Drugiej liczbie ustawiona flaga jest na 1 czyli oznacza to że wszystko zostało wczytane , co robie źle , przecież bufor oraz flagi są czyszczone przed wczytaniem kazdej zmiennej.

P-83986
DejaVu
» 2013-05-26 15:22:27
Frazy, które należy wpisać w wyszukiwarkę google:

Generalnie rzecz biorąc po wczytaniu danych powinieneś sprawdzić, czy wystąpił błąd. Ty to robisz na początku, zanim cokolwiek wczytasz, więc tym samym otrzymujesz 3-krotnie informację, że błędów żadnych nie ma.

/edit:
Poza tym najpierw się wczytuje wartość, później odczytuje się informację czy wystąpił błąd, a potem się czyści stan strumienia po to, aby kolejne operacje mogły się prawidłowo wykonać.
P-83988
Kanabinol
Temat założony przez niniejszego użytkownika
» 2013-05-26 15:56:39
Dziękuje bardzo za odpowiedź :)

z problemem poradziłem sobie tak
C/C++
std::cout << "Podaj Pierwsza Liczbe : ";
std::cin >> a;
zmienna1 = std::cin.good();
std::cin.clear();
std::cin.sync();
Myślenie nie boli :D , dziękuje za wskazówki , jedziemy dalej z nauką :>
P-83994
« 1 »
  Strona 1 z 1