Rozdzial 9 Pytanie o kod
Ostatnio zmodyfikowano 2017-01-31 12:07
ofnero Temat założony przez niniejszego użytkownika |
Rozdzial 9 Pytanie o kod » 2017-01-31 10:57:02 Witam, niedawno zacząłem naukę z językiem C++ i mam pytanie odnośnie zadania z rozdziału 9, który znajduje się tutaj: http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Obsluga-strumienia-wejsciowego/12. Chciałbym się dowiedzieć, czy informacja o poprawnym wczytaniu ma być z góry określona jak w poniższym kodzie czy komputer automatycznie ma to wykryć. Jeśli ma wykryć to proszę o poprawienie jak to ma wyglądać.Kod wygląda tak: #include <iostream>
using namespace std; float a, b, c; bool wczytano = cin.good(); bool niewczytano = cin.fail();
int main() { cout << "Podaj 1 liczbe rzeczywista: "; cin >> a; cin.clear(); cin.sync(); cout << "Podaj 2 liczbe rzeczywista: "; cin >> b; cin.clear(); cin.sync(); cout << "Podaj 3 liczbe rzeczywista: "; cin >> c; cin.clear(); cin.sync(); cout << "Liczba pierwsza to: " << a << ". Wczytano: " << wczytano << endl; cout << "Liczba druga to: " << b << ". Wczytano: " << niewczytano << endl; cout << "Liczba trzecia to: " << c << ". Wczytano: " << wczytano << endl; return 0; }
|
|
garlonicon |
» 2017-01-31 11:17:59 Sprawdź, jakie otrzymasz wyniki po podaniu niepoprawnych danych (na przykład liter). |
|
ofnero Temat założony przez niniejszego użytkownika |
» 2017-01-31 11:42:56 Ale ten program napisałem żeby podał wynik taki jak w zadaniu domowym z kursu, czyli dla: 13.3 tak 123 33.22nie
Liczba pierwsza to: 13.3. Wczytano? 1. Liczba druga to: 0. Wczytano? 0. Liczba trzecia to: 33.22. Wczytano? 1.
Problem tkwi w tym, że u mnie z góry jest zaznaczone, że dla liczby drugiej zachodzi cin.fail(). Chciałbym się dowiedzieć jak zrobić, żeby to program decydował kiedy jest to prawda, a kiedy fałsz. |
|
karambaHZP |
» 2017-01-31 11:44:46 float a, b, c; bool wczytano = cin.good(); bool niewczytano = cin.fail(); |
Problem tkwi w tym, że u mnie z góry jest zaznaczone, że dla liczby drugiej zachodzi cin.fail(). Chciałbym się dowiedzieć jak zrobić, żeby to program decydował kiedy jest to prawda, a kiedy fałsz. |
Dla liczb deklarujesz trzy zmienne, a dla przechowania wartości logicznych masz jedną zmienną dla trzech liczb? Zrób trzy zmienne bool i przypisz do nich wartość zwróconą z metody cin.good() lub cin.fail() , ale dla każdej z nich dopiero po próbie wczytania operatorem >> do zmiennej float . |
|
ofnero Temat założony przez niniejszego użytkownika |
» 2017-01-31 12:07:13 #include <iostream>
using namespace std;
int main() { cout << "Podaj 1 liczbe rzeczywista: "; float a; cin >> a; bool x = cin.good(); cin.clear(); cin.sync(); cout << "Podaj 2 liczbe rzeczywista: "; float b; cin >> b; bool y = cin.good(); cin.clear(); cin.sync(); cout << "Podaj 3 liczbe rzeczywista: "; float c; cin >> c; bool z = cin.good(); cin.clear(); cin.sync(); cout << "Liczba pierwsza to: " << a << ". Wczytano: " << x << endl; cout << "Liczba druga to: " << b << ". Wczytano: " << y << endl; cout << "Liczba trzecia to: " << c << ". Wczytano: " << z << endl; return 0; }
Czyli tak to powinno w skrócie wyglądać?:) |
|
« 1 » |