Kurzciel Temat założony przez niniejszego użytkownika |
Sprawdzanie "Zadań domowych" , np."Obsługa strumienia wejściowego" » 2017-03-28 20:15:03 Dobry wieczór, Jestem nowym użytkownikiem forum. Właśnie przerabiam lekcje z kursu "C/C++", właśnie się zatrzymałem na "Obsługa strumienia wejściowego", mam zamiar zresztą wrócić do początku (żeby dobrze wchłonąć temat). Moje wątpliwości budzą zadania domowe. Mianowicie, nie wiem, czy zrobiłem je dobrze, czy może jednak coś jest do poprawki. Jak wiecie, samodzielne ocenianie pracy nie jest w 100% obiektywne. Może ten wątek, jeśli zaawansowani użytkownicy byliby zainteresowani, mógłby być takim "miejscem" gdzie starsi koledzy pomagają młodszym? Sam mam zapisane już 4 zadania domowe zapisane i nie jestem pewien, czy wykonałem je dobrze.. Przykładowo, w tej chwili zmagam się z tym: #include <iostream> int main()
{ float a; float b; float c; std::cout << "Liczba pierwsza to:"; std::cin >> a; std::cout << "Wczytano?" << std::cin.good() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Liczba druga to:"; std::cin >> b; std::cout << "Wczytano?" << std::cin.good() << std::endl; std::cin.clear(); std::cin.sync(); std::cout << "Liczba trzecia to:"; std::cin >> c; std::cout << "Wczytano?" << std::cin.good() << std::endl; std::cin.clear(); std::cin.sync(); return 0; }
Gwoli wyjaśnienia, kod wygląda tak pokracznie, bo to moje pierwsze kroki w świecie programowania, a nie chciałem z przykładów umieszczonych w tym rozdziale nic kopiować. Wolałem od "." do "." polecieć sam i chyba mnie przerosło.. Miłego wieczoru. |
|
karambaHZP |
» 2017-03-28 21:32:47 W tym zadaniu trzeba jeszcze zadeklarować zmienne logiczne bool do przechowania stanów strumienia i na sam koniec dopiero wypisać wszystkie przechowywane wartości. |
|
Kurzciel Temat założony przez niniejszego użytkownika |
» 2017-03-29 11:27:46 Myślę, że poprawiłem zgodnie z zaleceniem powyżej (chyba, że źle zrozumiałem zalecenie). Po wpisaniu wartości na samym końcu wyświetlają się przechowywane wartości i czy są one dobre.. Jednak dalej mam problem z "bool", nie mam pojęcia po prostu w jaki sposób go użyć i podejrzewam, że to właśnie z tego wynika kłopot, w którym mimo złej wartości "tak 123", mamy wynik "1". W poprzedniej wersji nie było tego kłopotu.. #include <iostream> #include <stdlib.h> int main()
{ float a; float b; float c; std::cout << "Liczba pierwsza to:"; std::cin >> a; std::cin.clear(); std::cin.sync(); std::cout << "Liczba druga to:"; std::cin >> b; std::cin.clear(); std::cin.sync(); std::cout << "Liczba trzecia to:"; std::cin >> c; std::cin.clear(); std::cin.sync(); std::cout << " \n Pierwsza liczba to: " << a; std::cout << " \t Wczytano? " << std::cin.good() << std::endl; std::cout << "Druga liczba to: " << b; std::cout << " \t Wczytano? " << std::cin.good() << std::endl; std::cout << "Trzecia liczba to: " << c; std::cout << " \t Wczytano? " << std::cin.good() << std::endl; system( "PAUSE" ); return 0; }
|
|
carlosmay |
» 2017-03-29 15:47:54 cin.good() zwraca przy wypisywaniu 1 , bo stan strumienia jest poprawny po ostatnim wczytywaniu. Przeczytaj jeszcze raz wskazówkę kolegi karambaHZP. |
|
Kurzciel Temat założony przez niniejszego użytkownika |
» 2017-03-29 18:48:56 #include <iostream> #include <stdlib.h> int main()
{ float a; float b; float c; bool A = std::cin.good(); bool B = std::cin.good(); bool C = std::cin.good(); std::cout << "Liczba pierwsza to:"; std::cin >> a; std::cin >> A; std::cin.clear(); std::cin.sync(); std::cout << "Liczba druga to:"; std::cin >> b; std::cin >> B; std::cin.clear(); std::cin.sync(); std::cout << "Liczba trzecia to:"; std::cin >> c; std::cin >> C; std::cin.clear(); std::cin.sync(); std::cout << "Pierwsza liczba to: " << a; std::cout << " \t Wczytano? " << A << std::endl; std::cout << "Druga liczba to: " << b; std::cout << " \t Wczytano? " << B << std::endl; std::cout << "Trzecia liczba to: " << c; std::cout << " \t Wczytano? " << C << std::endl; system( "PAUSE" ); return 0; }
Panowie, prawie się udało, ogólnie zastosowałem "bool", z tym, że teraz przy prawidłowej wartości otrzymuje wynik "0", a błędnej (tekstowej) "1". |
|
Janusz2 |
» 2017-03-29 19:48:34 Hej, na wstępie muszę zaznaczyć, że również się uczę i mogę pisać bzdury :) Twój program nie działa tak jak myślisz. bool niczego nie sprawdza, Ty sam nadajesz mu wartość 0 lub 1. bool A = std::cin.good(); std::cin >> A; std::cout << " \t Wczytano? " << A << std::endl;
Ja również mam pytanie odnośnie bool, gdy próbujemy mu nadać wartość 'a' (w rzeczywistości 'a' to jakaś liczba) dlaczego pokazuje 0 a nie 1? |
|
Kurzciel Temat założony przez niniejszego użytkownika |
» 2017-03-29 20:58:01 Z tego, co ja zrozumiałem, 'bool' ma zapamiętywać, czy dane wejściowe są poprawne i na sam koniec dać temu wyraz (1 - poprawne, 0 - niepoprawne, np. tekst). Przepuść mój kod w CodeBlock, odpal .exe - kiedy podasz wartości np. L1 = 17, L2 = nie, L3 = 123 tak, dostaniesz odpowiedzi dobre (w sensie, program poda wartości dobrze przeczytane), ale "Wykonano" już złe: L1= 0, L2= 1, L3=0, a powinno być chyba na odwrót ;) |
|
Panniikt |
» 2017-03-29 21:35:17 Mam podobny problem do was Panowie. Mianowicie nie daję sobie rady ze zmienna bool. Może ktoś z bardziej ogarniętych podrzuci jakieś rozwiązanie? #include <iostream>
using namespace std;
int main( int argc, char * argv[] ) { float a, b, c; cout << "podaj pierwsza liczbe rzeczywista: " << endl; cin >> a; cin.good(); cin.clear(); cin.sync(); cout << "podaj druga liczbe rzeczywista: " << endl; cin >> b; cin.good(); cin.clear(); cin.sync(); cout << "podaj trzecia liczbe rzeczywista: " << endl; cin >> c; cin.good(); cin.clear(); cin.sync(); cout << "pierwsza liczba to ; " << a << " wczytano? " << endl; cout << "druga liczba to ; " << b << " wczytano? " << endl; cout << "trzecia liczba to : " << c << " wczytano? " << endl; return 0; }
|
|
« 1 » 2 |