Lekcja 12 Strumień wejścia
Ostatnio zmodyfikowano 2011-01-29 16:12
Caranti Temat założony przez niniejszego użytkownika |
Lekcja 12 Strumień wejścia » 2011-01-29 14:08:30 Witam
Może zacznę od tego że proszę o wyrozumiałość dotycząca mojej prośby. Rozumiem że dla was problem może być naprawdę banalny , ale moje przygoda z programowaniem dopiero się zaczęła.
Przeje do konkretów a mianowicie chodzi o zadanie z lekcji obsługa strumieniu wejścia :
"Napisz program, który wczyta trzy liczby rzeczywiste, a na końcu programu je wszystkie wypisze. Zadbaj o to, by bufor strumienia wejściowego był za każdym razem czyszczony. Wynik końcowy powinien również zawierać informacje czy wczytanie danej liczby się powiodło. "
"Wskazówka : Informacje o poprawnym (albo niepoprawnym) wczytaniu danych należy przechować w dodatkowych zmiennych typu bool"
Problem pojawia się przy zmiennej bool oraz sprawdzaniu wyniku (jego prawidłowości)
Oto mój kod
#include <iostream> int main() { float a; int b; float c ;
bool d,e; d = false; e = true;
//Czyszczenie zawartosci strumienia wejscia std::cin.clear(); std::cin.sync();
std::cin >> a;
//Czyszczenie zawartosci strumienia wejscia std::cin.clear(); std::cin.sync();
std:: cin >> b;
//Czyszczenie zawartosci strumienia wejscia std::cin.clear(); std::cin.sync();
std:: cin >> c;
//Wyświetlanie wartosci zmiennych std::cout << "\n\nLiczba pierwsza to : " << a << "\tWczytano ? "; std::cout << d << std::cin.good () ; std::cout << e << std::cin.fail() ;
std::cout << "\n\nLiczba druga to : = " << b << "\tWczytano ? " ; std::cout << d << std::cin.good() ; std::cout << e << std::cin.fail() ;
std::cout << "\n\nLiczba trzecia to : " <<c << "\tWczytano ? "; std::cout << d << std::cin.good() ; std::cout << e << std::cin.fail() << std ::endl;
return 0; }
Wiem że mój sposób na sprawdzanie wyniku jest bezsensowny xD(i tak zawsze wypisze 0110)
hmm myślę że musi być jakieś odwołanie zmiennej bool aby sprawdzała wynik tylko nie wiem jak ;/ sprawdzałem wiele sposobów ale nie wychodziło proszę o jakieś wskazówki |
|
szyx_yankez |
» 2011-01-29 14:35:33 Poprostu zapisujesz zwracaną wartość metody cin.good() do zmiennej 'bool'.
bool wczytano = cin.good();
I sprawdzaj poprawność po każdym wczytaniu zmiennej a nie pod koniec programu. |
|
Caranti Temat założony przez niniejszego użytkownika |
» 2011-01-29 15:29:11 Ok dzięki działa :)
Ale chce zrobić tak samo jak pokazane jest w przykładzie : http://cpp0x.pl/kursy/Kurs-C++/Podstawy/Obsluga-strumienia-wejsciowego/12
czyli aby w strumieniu wyjścia wypisywało mi czy są dobre dane
//Wyświetlanie wartosci zmiennych std::cout << "\n\nLiczba pierwsza to : " << a <<std::endl; ( coś tu musi być )
No nic będę dalej próbował ;)
A tak wogóle to jest lekcja 9 ;pp |
|
szyx_yankez |
» 2011-01-29 15:47:36 std::cout << "\n\nLiczba pierwsza to : " << a <<std::endl; ( coś tu musi być ) |
Tutaj musisz dodać napis 'wczytano' i stan dodatkowej zmiennej.
Czyli:
#include <iostream> int main() { float a; float b; float c; bool a_stan, b_stan, c_stan; std::cin.clear(); std::cin.sync(); std::cin >> a; a_stan = std::cin.good(); std::cin.clear(); std::cin.sync(); std::cin >> b; b_stan = std::cin.good(); std::cin.clear(); std::cin.sync(); std::cin >> c; c_stan = std::cin.good(); std::cout << "\n\nLiczba pierwsza to : " << a << "\tWczytano ? " << a_stan; std::cout << "\n\nLiczba druga to : " << b << "\tWczytano ? " << b_stan; std::cout << "\n\nLiczba trzecia to : " << c << "\tWczytano ? " << c_stan; return 0; }
|
|
Caranti Temat założony przez niniejszego użytkownika |
» 2011-01-29 16:12:28 Działa!!!!!!!!!!!!!!!! :D:D
Dzięki mistrzu :):)
Przeanalizuje sobie teraz na spokojnie ;) i czas na kolejny temat :) |
|
« 1 » |