Opis działania strumienia wejściowego - wprowadzanie danych do strumienia
Ostatnio zmodyfikowano 2015-12-17 23:46
Alipeteros Temat założony przez niniejszego użytkownika |
Tworzysz zmienną 'aCzySukces', 'bCzySukces', 'cCzySukces'. Zapisujesz stan strumienia po wczytaniu danych, czyli wartość 'true' lub 'false', którą zwraca std::cin . I to wszystko. Nigdzie nie używasz (...) » 2015-12-16 19:46:27 Czyli że "bool aCzySukces" w ogóle niepotrzebne? Naprawdę tego nie czaje. Podane są przykłady jakieś i: "Informacje o poprawnym (albo niepoprawnym) wczytaniu danych należy przechować w dodatkowych zmiennych typu bool." Więc to narzuca mi tylko myśl o użyciu tego czegoś. Zaczynam się wkurzać. Chcę tego się nauczyć ale to mnie już dobija. |
|
Alipeteros Temat założony przez niniejszego użytkownika |
» 2015-12-16 19:52:48 Powoli sił mi brakuje do zrozumienia tego więc mam taką prośbę: Czy może mi ktoś poprawić ten program i ewentualnie wytłumaczyć wprowadzone zmiany bo tak będzie wg mnie najprościej "łopatologicznie" |
|
carlosmay |
» 2015-12-16 20:24:38 std::cout << "Liczba a = " << a << "Czy udalo sie wczytac?: << aCzySukces << std::endl;
Teraz zmiennej 'aCzySukces' używasz do wyświetlenia info o powodzeniu/niepowodzeniu wczytywania do zmiennej 'a'. Dla pozostałych analogicznie. Liczba pierwsza to: 13.3. Wczytano? 1. Liczba druga to: 0. Wczytano? 0. Liczba trzecia to: 33.22. Wczytano? 1.
dane wyjściowe powinny wyglądać mniej więcej tak. |
|
Alipeteros Temat założony przez niniejszego użytkownika |
» 2015-12-17 23:46:39 Ta linijka wygląda mi na odpowiednią ale gdzie bym ją nie wstawił to program nawet odpalić nie chce.
Po edycji: Zacząłem się bawić i osiągnąłem wynik bliski oczekiwanemu ale jest jeden problem. Podając jako pierwszą liczbę "13.3" wyświetla ją jako "13" bez końcówki. Dlaczego?
#include <iostream> #include <limits> int main() { int a; int b; int c;
std::cin >> a;
bool aCzySukces = std::cin.good(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
std::cin >> b;
bool bCzySukces = std::cin.good(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
std::cin >> c;
bool cCzySukces = std::cin.good(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
std::cout << "Liczba pierwsza to: " << a << ". Wczytano? " << aCzySukces << std::endl; std::cout << "Liczba druga to: " << b << ". Wczytano? " << bCzySukces << std::endl; std::cout << "Liczba trzecia to: " << c << ". Wczytano? " << cCzySukces << std::endl;
return 0; }
Edycja: Teraz zmieniłem wartość int na float aby przecinki wczytywało i teraz otrzymałem efekt pożądany w programie. Pozdro i dzięki za pomoc.
#include <iostream> #include <limits> int main() { float a; float b; float c;
std::cin >> a;
bool aCzySukces = std::cin.good(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
std::cin >> b;
bool bCzySukces = std::cin.good(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
std::cin >> c;
bool cCzySukces = std::cin.good(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
std::cout << "Liczba pierwsza to: " << a << ". Wczytano? " << aCzySukces << std::endl; std::cout << "Liczba druga to: " << b << ". Wczytano? " << bCzySukces << std::endl; std::cout << "Liczba trzecia to: " << c << ". Wczytano? " << cCzySukces << std::endl;
return 0; }
|
|
1 « 2 » |