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

Poziom 1 Rozdział 9 Zadanie

Ostatnio zmodyfikowano 2015-08-04 21:28
Autor Wiadomość
Arhardable
Temat założony przez niniejszego użytkownika
Poziom 1 Rozdział 9 Zadanie
» 2015-08-04 02:57:32
Mój problem polega na tym, że u mnie rozwiązanie zadania wygląda tak:
Błędne rozwiązanie
A powinno wyglądać tak jak na stronie http://cpp0x.pl/kursy/Kurs-C++​/Poziom-1​/Obsluga-strumienia-wejscioweg​o​/12 :
Liczba pierwsza to: 13.3. Wczytano? 1.
Liczba druga to: 0. Wczytano? 0.
Liczba trzecia to: 33.22. Wczytano? 1.

Oto mój kod źródłowy :
C/C++
#include <iostream>
using namespace std;
int main()
{
    float liczba1;
    cin >> liczba1;
    cin.clear();
    cin.sync();
   
    float liczba2;
    cin >> liczba2;
    cin.clear();
    cin.sync();
   
    float liczba3;
    cin >> liczba3;
    cin.clear();
    cin.sync();
   
    bool Wczytano = cin.good();
    cin.clear();
    cin.sync();
   
   
    cout << " Liczba pierwsza to: " << liczba1 << " Wczytano? " << Wczytano << endl;
   
    cout << " Liczba druga to: " << liczba2 << " Wczytano? " << Wczytano << endl;
   
   
    cout << " Liczba trzecia to: " << liczba3 << " Wczytano? " << Wczytano << endl;
   
   
    return 0;
}
 
Nie wiem co robię źle dlatego proszę o wskazówki.
Pozdrawiam.
P-135670
kmlkamilek
» 2015-08-04 04:00:01
Po pierwsze, w rozdziale wyraźnie pisze, że są to przykładowe dane wyjściowe.
Po drugie, metody good() i fail() zwracają wartość na podstawie ostatnio wykonanego wczytywania danych
Nie jest to dosłownie napisane w rozdziale, ale przyglądając się przykładom, można się zorientować.

Prześledź przykłady w rozdziale, przeanalizuj własny kod, porównaj i wyciągaj wnioski.
P-135671
Arhardable
Temat założony przez niniejszego użytkownika
» 2015-08-04 13:17:49
* kmlkamilek
Po pierwsze, w rozdziale wyraźnie pisze, że są to przykładowe dane wyjściowe.
Po drugie, metody good() i fail() zwracają wartość na podstawie ostatnio wykonanego wczytywania danych
Nie jest to dosłownie napisane w rozdziale, ale przyglądając się przykładom, można się zorientować.

Prześledź przykłady w rozdziale, przeanalizuj własny kod, porównaj i wyciągaj wnioski.

Wiem, że to są przykładowe dane. Podaje te same w programie aby zobaczyć czy wszystko robię dobrze, gdybym dał inne to bym nie miał porównania tak jak w tym przypadku. Kod analizowałem długo i dalej nie wiem co źle robię. To jest mój trzeci dzień nauki więc proszę o wyrozumiałość. Dziękuje ci, że zainteresowałeś się tym tematem, jednakże nie pomogłeś mi. Jeżeli można to proszę o bardziej szczegółową pomoc.
____________________________
Pozdrawiam

P-135680
xKTN
» 2015-08-04 13:25:10
Kolega kmlkamilek podał ważną podpowiedź:
metody good() i fail() zwracają wartość na podstawie OSTATNIO wykonanego wczytywania danych.

Popatrz w swój kod, do której z prób wczytania odnosi się ten fragment?
C/C++
bool Wczytano = cin.good();
cin.clear();
cin.sync();

Bo musisz wiedzieć, że nie sprawdzasz w ten sposób wszystkich prób, jak to powinno być w poprawnie rozwiązanym zadaniu.
P-135681
Arhardable
Temat założony przez niniejszego użytkownika
» 2015-08-04 14:57:37
Trochę go zedytowałem dodałem nowe parametry, ale niestety dalej piszę wszędzie, że wczytało chociaż przy błędnym wpisaniu powinno wyświetlić 0.

Oto kod źródłowy:

C/C++
#include <iostream>
using namespace std;
int main()
{
    float liczba1, liczba2, liczba3;
   
    cin >> liczba1;
    cin.clear();
    cin.sync();
   
    cin >> liczba2;
    cin.clear();
    cin.sync();
   
    cin >> liczba3;
    cin.clear();
    cin.sync();
   
    bool a = cin.good();
    cin.clear();
    cin.sync();
    bool b = cin.good();
    cin.clear();
    cin.sync();
    bool c = cin.good();
    cin.clear();
    cin.sync();
   
   
    cout << " Liczba pierwsza to: " << liczba1 << " Wczytano? " << a << endl;
    cout << " Liczba druga to: " << liczba2 << " Wczytano? " << b << endl;
    cout << " Liczba trzecia to: " << liczba3 << " Wczytano? " << c << endl;
   
   
    return 0;
   
}

_____________________
Pozdrawiam.
P-135685
BadBullPL
» 2015-08-04 16:28:43
C/C++
bool a = cin.good();
    cin.clear();
    cin.sync();
    bool b = cin.good();
    cin.clear();
    cin.sync();
    bool c = cin.good();
    cin.clear();
    cin.sync();
metody good() i fail() zwracają wartość na podstawie OSTATNIO wykonanego wczytywania danych.
P-135692
Braile
» 2015-08-04 17:02:28
Pamiętaj także, aby strumień jak i flagę błędu czyścić przed każdym wczytaniem danych.
P-135694
carlosmay
» 2015-08-04 17:38:14
Wczytujesz zmienna1 i zapisujesz stan nr 1.
Wczytujesz zmienna2 i zapisujesz stan nr 2.
Wczytujesz zmienna3 i zapisujesz stan nr 3.

Na koniec wypisujesz.

Zmienna1 oraz stan 1
Zmienna2 oraz stan 2
Zmienna3 oraz stan 3
P-135699
« 1 » 2
  Strona 1 z 2 Następna strona