evanges Temat założony przez niniejszego użytkownika |
» 2013-07-24 15:21:55 Nie wiem jak to zrobić. Jest to tam wytłumaczone w sposób niezrozumiały dla mnie, dlatego chcę żeby ktoś mi tu wkleił kod. Tylko tyle... |
|
pekfos |
» 2013-07-24 16:33:05 Czego dokładnie nie rozumiesz? |
|
evanges Temat założony przez niniejszego użytkownika |
» 2013-07-24 19:49:38 Konkretnie to nie rozumiem jak wprowadzić dane do strumienia, żeby uzyskać taki efekt: "12345, 321. Czy 2+2 wynosi 4?" Ponad to nie wiem jak to jest z tym buforem strum. wejściowego. Mój problem jest w lekcji nr 9 poz. kursu 1. Byłbym wdzięczny za napisanie kompletnego kodu zdolnego do kompilacji i wyjaśnienie czegokolwiek o tym buforze ;) |
|
pekfos |
» 2013-07-24 19:54:24 Użytkownik programu wprowadza dane do strumienia, które potem odczytujesz w programie. Gdy program się zatrzyma na wczytywaniu danych od użytkownika i użytkownik poda te "12345, 321..", to trafi to do bufora strumienia. Potem gdy odczytujesz int, to wczytasz z bufora "12345" do jakiejś zmiennej, a w buforze zostanie cała reszta (", 321.."), którą też możesz odczytać. |
|
Rafals |
» 2013-07-24 20:21:06 Właśnie się pociłem przez 20 minut, aby to wytłumaczyć, a tu nagle po akceptacji post nie wskoczył... Tak jak Pekfos napisał. Do jakiejś zmiennej typu int wczytasz '12345', następny jest przecinek i właśnie tu przerwie wczytywanie, bo przecinek jest typu char. Popróbuj np na takim kodzie: #include <iostream>
int main() { int a, b; std::cout << "podaj cos: "; std::cin >> a; std::cin >> b; std::cout << a << std::endl; std::cout << b; } Najpierw wprowadź coś podobnego do przykładu, np: "12, 32". Do a przypisze 12, a do b nic bo spotkał przecinek, który jest typem char, z kolei b jest typem int. Drugie wprowadzenie zrób "12 32". Do a przypisze 12, do b przypisze 32. Dlatego że pomija spację będącą białym znakiem. Tu drugi przykład, z tym że pamiętaj iż typ char to może być wszystko, od cyfry po literę, poprzez znaki specjalne. #include <iostream>
int main() { int a, c; char b; std::cout << "podaj cos: "; std::cin >> a; std::cin >> b; std::cin >> c; std::cout << a << std::endl; std::cout << b << std::endl; std::cout << c; }
Pierwsze wprowadzenie: "12,32" Drugie wprowadzenie: "12 32" Wprowadzanie bez czyszczenia strumienia można wykorzystać np w ten sposób: #include <iostream> using namespace std;
int main() { int dzien, miesiac, rok; cout << "Podaj date urodzenia w formacie 'dd mm rrrr':" << endl; cin >> dzien; cin >> miesiac; cin >> rok; cout << "Twoja data urodzenia to:" << endl; cout << dzien << ":" << miesiac << ":" << rok; } Zamiast pytać osobno o dzień, miesiąc i rok. Aczkolwiek niesie to za sobą ryzyko, że zostanie wprowadzone coś innego i wtedy wyświetlą się błędne dane. Brak czyszczenia strumienia można użyć o ile wiesz, że będzie wczytane to co powinno. |
|
pekfos |
» 2013-07-24 20:37:27 #include <iostream> using namespace std;
int main() { int x; cin >> x; cin.clear(); char tab[ 64 ]; cin.getline( tab, 64 ); cout << tab; } |
|
evanges Temat założony przez niniejszego użytkownika |
» 2013-07-25 11:52:49 Dzięki za pomoc. Już wiem o co chodzi, tylko dziwie się, że to działa bez : return 0; |
|
pekfos |
» 2013-07-25 14:15:02 Funkcja main() to wyjątek. Zwraca 0, jeśli oczywiście nie zostało jawnie zwrócone co innego ;) We wszystkich innych funkcjach zwracających wartości, wyjście bez określenia zwracanej wartości to UB. |
|
1 « 2 » |