Obsługa strumienia wejściowego
Ostatnio zmodyfikowano 2011-06-08 14:58
wozio25 Temat założony przez niniejszego użytkownika |
Obsługa strumienia wejściowego » 2011-06-07 18:52:38 Uczę się od niedawna C++. Jestem można powiedzieć bardzo początkujący. Próbuje przejść przez Kurs C++. Teraz moje pytanie. Nie potrafię zrozumieć Jednego z etapów.
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1 /Obsluga-strumienia-wejsciowego/12
Dokładnie to punktu, w którym mamy do czynienia z std::cin.good() oraz std::cin.fail()..
Sądzę, że program który jest tam napisany jest błędny, ponieważ program nie pyta mnie czy liczby zostały wprowadzone poprawnie, czy też nie.
Dajcie jakieś podpowiedzi:D Tylko jakimś prostszym językiem proszę;) |
|
DejaVu |
» 2011-06-07 18:54:44 Wypisuje Ci informację czy powiodło się wczytywanie czy nie. W dalszej części kursu dowiesz się jak robić warunki. |
|
wozio25 Temat założony przez niniejszego użytkownika |
. » 2011-06-07 19:00:46 Pomija ten krok po prostu. tylko go wypisuje, nie daje mi możliwości wyboru(1,0). |
|
Mrowqa |
» 2011-06-07 19:22:28 Nie rozumiesz tego :) Podczas gdy podasz coś błędnie ( np. znak zamiast liczby ) strumień cin ustawia sobie flagę błędu. Jeśli wywołasz cin.good() to on sprawdza czy ta flaga jest ustawiona czy nie. Jeśli jest ustawiona - zwraca 0, jeśli nie - zwraca 1. ( z cin.fail() jest na odwrót :D ).
Pozdrawiam, Mrowqa |
|
wozio25 Temat założony przez niniejszego użytkownika |
. » 2011-06-07 19:27:16 Dobra dzięki. Już rozumiem;). Będę jeszcze nękał swoją osobą na tym forum
|
|
wozio25 Temat założony przez niniejszego użytkownika |
» 2011-06-08 13:22:09 Mój kolejny dylemat..
#include <iostream> int main() { int a = 13; int b = 14; int c = 15; std::cout << "Liczba Pierwsza to: "; std::cin >> a; std::cout << "Wczytano? " << std::cin.good() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Liczba druga to: "; std::cin >> b; std::cout << "Wczytano? " << std::cin.good() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Licza trzecia to: "; std::cin >> c; std::cout << "Wczytano? " << std::cin.good() << std::endl; std::cin.clear(); std::cin.sync(); return 0; }
To jest zadanie domowe z http://cpp0x.pl/kursy/Kurs-C++/Poziom-1 /Obsluga-strumienia-wejsciowego/12.
Wykonując program wprowadzam liczby i nie ważne jaką liczbę wprowadzę i tak ustawia flagę na "1". zwraca "0" tylko wtedy, gdy wprowadzę np. literkę.
Proszę mnie naprostować
----------------------------
Chyba wpadłem co jest powodem. Zadeklarowałem zmienną int co oznacza duży zakres liczb od 0 do ntej. a 13 jest tylko ustawieniem początkowym. Jak zdeklarować zmienną która będzie zawierała tylko 1 liczbę? |
|
absflg |
» 2011-06-08 14:58:50 Kod wstawiaj w znaczniki [cpp][/cpp].
1 to w tym przypadku prawda, a 0 to fałsz.
Metoda nazywa się good, więc zwraca odpowiedź na pytanie "czy jest dobrze?". W normalnych warunkach zwraca 1, bo 1 to prawda.
Jeżeli zmienna liczbowa ma duży zakres to jest oczywiste, że może przechowywać dowolną liczbę z tego zakresu, także małą (w ogóle "mała" to pojęcie względne).
Każda zmienna liczbowego typu wbudowanego przechowuje tylko jedną liczbę. |
|
« 1 » |