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

Prosba o sprawdzenie rozdzialu 9

Ostatnio zmodyfikowano 2012-07-11 11:49
Autor Wiadomość
Pemo69
Temat założony przez niniejszego użytkownika
Prosba o sprawdzenie rozdzialu 9
» 2012-07-05 17:43:58
Nie chodzi o zadanie 9 tylko o sama tresc:

» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja

Opis działania strumienia wejściowego

Skoro nauczyliśmy się już korzystać ze strumienia wejściowego w podstawowym wymiarze - przyjrzyjmy się teraz jego działaniu. Wyobraźmy więc sobie, że początkowo strumień jest pusty. Wysyłamy następnie żądanie: "daj mi liczbę całkowitą" (czyli: std::cin>>liczba). Strumień jest pusty, więc nie można z niego pobrać danych, a więc użytkownik musi wprowadzić nowe dane do strumienia. Wprowadźmy teraz do strumienia następujące dane:
12345, 321. Czy 2+2 wynosi 4?
Po wciśnięciu klawisza ENTER dane te trafiają do bufora strumienia wejściowego, z którego następnie odczytywane są dane. Po wczytaniu liczby w buforze strumienia wejściowego zostaną następujące dane:
, 321. Czy 2+2 wynosi 4?
<b>Co się teraz stanie, gdy zechcemy wczytać kolejną liczbę? Strumień stwierdzi, że pierwszym znakiem w strumieniu jest znak ,, który nie jest liczbą, a więc nie zostanie wczytana liczba. Operacja wczytywania się nie powiedzie, a flaga błędu zostanie ustawiona.</b>
Pisze do tego program:

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

int main()

{
    int a;
    int b;
    std::cout << "daj mi liczbe calkowita:";
    std::cin >> a;
    std::cout << "liczba a =" << a << std::endl;
   
    std::cout << "daj mi liczbe calkowita:";
    std::cin >> b;
    std::cout << "liczba b =" << b << std::endl;
    return 0;
}
i nie otrzymuje takich wyników jak powinienem - mianowicie a = 12345 a b nie 0 tylko jakieś dziwne 2293544.
Pytanie dlaczego.
P-59558
irvs126
» 2012-07-05 23:10:37
Podaj jakie dane dajesz programowi

Jesli podajesz 12345, 321. Czy 2+2 wynosi 4?
Masz opisane białe znaki jak spacja TABulacja i ENTER są pomijane
A przecinek NIE
więc zamiast 12345, 321. Czy 2+2 wynosi 4?
wpisz 12345 321 Czy 2+2 wynosi 4?  :)
bo typ zmiennej to liczbowa-INT a przecinek to nie liczba
a jest wczytywany do 2 zmiennej jako drugi z kolei :D
P-59565
DejaVu
» 2012-07-05 23:12:39
Bo podajesz przecinek. Wpisz jedną liczbę (enter) i drugą liczbę (enter).

/edit:
Przecież jest to wyjaśnione w tym tekście, który sam zacytowałeś...
P-59566
Pemo69
Temat założony przez niniejszego użytkownika
» 2012-07-06 11:53:36
Znaczy mam rozumiec ze kompilator interpretuje , jako 2293544, a w tekscie jest ze nie zostanie wczytana liczba. A tak na marginesie to sa wyniki z code blox a w devie już w tym samym programie a = 12345, b = 0... i to jest ciekawe. Tak jeszcze pozatym to generalnie moj kumpel uczy sie programowac i mnie o to zapytal i nie wiedzialem dlaczego jest tak dziwnie.
Podaje wersje z 12345, 321. Czy 2 + 2 =4?
P-59573
irvs126
» 2012-07-06 11:56:47
Po prostu używaj spacji zamiast przecinków gdy podajesz programowi dane :)
P-59574
Pemo69
Temat założony przez niniejszego użytkownika
» 2012-07-06 17:23:26
Tak, wiem ale dlaczego uznalo przecinek jako liczbe:P
Z tego wynika, że w lekcji jest błąd...
P-59588
jankowalski25
» 2012-07-06 18:22:08
b nie 0 tylko jakieś dziwne 2293544
Po kodzie
C/C++
int a;
int b;
wstaw
C/C++
a = b = 0;
i zobacz, co się stanie.
P-59594
f0g
» 2012-07-06 23:35:18
Tak, wiem ale dlaczego uznalo przecinek jako liczbe:P
Z tego wynika, że w lekcji jest błąd...

Nie uznało przecinka jako liczbę. Typ zmiennej INT jest typem liczbowym, więc przyjmuje tylko liczby :) Do przechowywania znaków jest specjalny typ zmiennej CHAR, a do przechowywania ciągów znaków STRING, ale o tym na pewno nauczysz się w późniejszych częściach kursu :)
P-59618
« 1 » 2
  Strona 1 z 2 Następna strona