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

Obsługa strumienia wejściowego

Ostatnio zmodyfikowano 2011-06-08 14:58
Autor Wiadomość
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ę;)
P-33938
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.
P-33939
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).
P-33940
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
P-33942
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


P-33943
wozio25
Temat założony przez niniejszego użytkownika
» 2011-06-08 13:22:09
Mój kolejny dylemat..
C/C++
#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ę?
P-33958
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ę.
P-33959
« 1 »
  Strona 1 z 1