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:
Obsługa strumienia wejściowego
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:
#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. |
|
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 |
|
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ś... |
|
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? |
|
irvs126 |
» 2012-07-06 11:56:47 Po prostu używaj spacji zamiast przecinków gdy podajesz programowi dane :)
|
|
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... |
|
jankowalski25 |
» 2012-07-06 18:22:08 b nie 0 tylko jakieś dziwne 2293544 |
Po kodzie wstaw i zobacz, co się stanie. |
|
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 :) |
|
« 1 » 2 |