Poziom 1 lekcja 9
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Poziom 1 lekcja 9

AutorWiadomość
Temat założony przez niniejszego użytkownika
Poziom 1 lekcja 9
» 2017-12-10 18:12:04
może mi ktoś wyjaśnić dlaczego przy drugiej liczbie przy wyniku cały czas się pokazuje mi 1 skoro wpisuje celowo złe dane?

C/C++
#include <iostream>
#include <cstdlib>

using namespace std;

int main( int argc, char * argv[] )
{
    double x, y, z;
    bool wynik = cin.good();
   
    cout << "podaj pierwsza liczbe " << endl;
    cin >> x;
   
    cin.clear();
    cin.sync();
   
    cout << "podaj druga liczbe " << endl;
    cin >> y;
   
    cin.clear();
    cin.sync();
   
   
    cout << "podaj trzecia liczbe " << endl;
    cin >> z;
   
    cin.clear();
    cin.sync();
   
   
    cout << "pierwsza liczba to " << x << " wczytano " << wynik << endl;
    cout << "druga liczba to " << y << " wczytano " << wynik << endl;
    cout << "trzecia liczba to " << z << " wczytano " << wynik << endl;
   
    return 0;
}
P-167778
» 2017-12-10 18:22:08
Nigdzie nie aktualizujesz zmiennej wynik, w swoim kodzie.
BTW: tutaj należy mieć trzy zmiennej do przechowywania stanu strumienia
i nadać im wartość o każdej próbie wczytywania danych.

Jeszcze jedno. Zrezygnuj z std::cin.sync() i zamień na std::cin.ignore() opisane pod koniec rozdziału.
P-167779
Temat założony przez niniejszego użytkownika
» 2017-12-12 18:03:30
a możesz mniej więcej wytłumaczyć jak aktualizować tą zmienną
P-167827
» 2017-12-12 18:32:46
Napisał Ci @YooSy, że należy mieć trzy zmiennej do przechowywania stanu strumienia
a Ty masz w programie 1-ą zmienna bool wynik, a powinno być np, bool wynikX, wynikY, wynikZ;
i każdej z tych zmiennych nadajesz wartośc cin.good(); tak jak to zrobiłeś do zmiennej wynik
Na dole programu gdzie wypisujesz wynik
cout << "pierwsza liczba to " << x << " wczytano " << wynik << endl;

możesz np. uzyć wyrażenia warunkowego do sprawdzenia stanu.
cout << "pierwsza liczba to " << x << " wczytano " << wyrazenie warunkowe << endl;
P-167828
» 2017-12-12 18:49:00
Zmienna przechowuje wartość, nie wyrażenie. Zmienna nie zmieni wartości tylko dlatego, że to co ostatnio było do niej przypisane teraz dałoby inny wynik.

a możesz mniej więcej wytłumaczyć jak aktualizować tą zmienną
Przypisz nową wartość.
P-167829
« 1 »
 Strona 1 z 1