[Lekcja 15] Kalkulator do sprawdzenia
Ostatnio zmodyfikowano 2015-01-06 20:21
medicineman Temat założony przez niniejszego użytkownika |
[Lekcja 15] Kalkulator do sprawdzenia » 2015-01-06 10:19:40 Witajcie. Jestem zielony z programowania i dopiero się uczę. Mógłby mi ktoś sprawdzić kalkulator, wydaję mi się że jest dobrze zabezpieczony, ale chce się upewnić, bo może coś mi umknęło. Z góry dzięki. Btw. Jak wrzucać tutaj kody żeby były w takim formacie jak większość tutaj na forum, a nie jak kopiowane z Worda? #include <iostream>
using namespace std;
int main() { cout << " \t\t\t -----:: Kalkulator ::----- " << endl << endl; int wybor; int a; int b; do { cout << endl; cout << " ** Wprowadz dane do obliczen ** " << endl << endl; cout << endl; cout << " Wprowadz pierwsza liczbe " << endl << endl; do { cout << "a = "; cin >> a; cin.clear(); cin.sync(); if( a == cin.fail() ) { cout << endl; cout << " Wpisano litere lub 0. Popraw dane! "; cout << endl; } } while( a == cin.fail() ); cout << endl; cout << " Wprowadz druga liczbe: " << endl; do { cout << endl; cout << "b = "; cin >> b; cout << endl; cin.clear(); cin.sync(); if( b == cin.fail() ) { cout << "Wpisano litere lub 0. Popraw dane!"; cout << endl; } } while( b == cin.fail() ); cout << " Dane do obliczen: " << endl << endl; cout << " a = " << a << endl; cout << " b = " << b << endl; do { cout << endl; cout << "Menu:" << endl; cout << endl; cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Wprowadz nowe dane" << endl; cout << "[6] Koniec " << endl << endl; cout << "Wybor = "; cin >> wybor; cin.clear(); cin.sync(); switch( wybor ) { case( 1 ) : cout << endl; cout << "a + b = " << a + b << endl; break; case( 2 ) : cout << endl; cout << "a - b = " << a - b << endl; break; case( 3 ) : cout << endl; cout << "a * b = " << a * b << endl; break; case( 4 ) : cout << endl; cout << "a / b = " << a / b << endl; break; case( 0 ) : cout << endl; cout << " \t -----:: Dziekuje za skorzystanie z programu! ::----- " << endl; return 0; case( 6 ) : cout << endl; cout << " \t -----:: Dziekuje za skorzystanie z programu! ::----- " << endl; return 0; } } while( wybor != 6 && wybor != 5 ); } while( wybor == 5 ); return 0; }
|
|
wilkoo13 |
» 2015-01-06 10:29:28 Kod wpisz między [cpp.] kod [/cpp.] bez kropek cin.clear() i cin.sync() daj po sprawdzeniu cin.fail() bo czyszcząc przed sprawdzeniem nic nie daje, usuwane są informacje czy dobrze wprowadziłeś czy źle. A nie, bo potem znowu w pętli dowhile sprawdzasz więc sync oraz clear wstaw tuż przed proszeniem użytkownika o wprowadzenie wartości zmiennej do { cin.clear(); cin.sync(); cout << "a = "; cin >> a; if( a == cin.fail() ) { cout << endl; cout << " Wpisano litere lub 0. Popraw dane! "; cout << endl; } } while( a == cin.fail() );
Tak samo zrób gdy pytasz o b. Reszta dobrze |
|
medicineman Temat założony przez niniejszego użytkownika |
» 2015-01-06 13:40:15 do { cin.clear(); cin.sync(); cout << "a = "; cin >> a; if( a == cin.fail() ) { cout << endl; cout << " Wpisano litere lub 0. Popraw dane! "; cout << endl; } } while( a == cin.fail() );
Dziwna sprawa. Zmieniłem lokalizację cin.clear() oraz cin.sync() i teraz jak wpiszę jako zmienną 0 lub literę to program przerzuca mnie od razu do menu. Wcześniej jak wpisywałem złą zmienną to program prosił mnie o ponowne wpisanie i nie puszczał mnie nawet do opcji wpisywania zmiennej b. |
|
wilkoo13 |
» 2015-01-06 18:25:55 Nie zauważyłem tego. Nie porównujesz wpisanej liczby do fail or good. Gdyż fail i good przyjmuje 0 lub 1 w zależności czy dobrze wprowadzisz lub źle. Warunek powinien wygladac while( cin.fail() ) Spróbuj tak zrobić i sprawdź czy działa jak powininen i wklej gotowy kod jeśli coś jest nie tak |
|
piotrlajewski |
Zadanie 15 pętla do-while, » 2015-01-06 19:48:16 Witam, posiłkując się lekcjami i pomocą z forum zacząłem tworzyć instrukcję do kalkulatora i napotkałem błąd: po wpisaniu kilku błędnych znaków, a potem właściwej liczby na ekranie nie wypisuje: z std::cout<<"Podana pierwsza liczba to: "<<a; #include <iostream> int main() { int a; std::cout << "Podaj pierwsza liczbe: "; std::cin >> a; if( std::cin.fail() ) do { std::cin.clear(); std::cin.sync(); std::cout << "Podaj prawidlowa pierwsza liczbe: "; std::cin >> a; } while( std::cin.fail() ); else std::cout << "Podana pierwsza liczba to: " << a; return 0; }
Dzieki za pomoc! |
|
medicineman Temat założony przez niniejszego użytkownika |
» 2015-01-06 20:21:33 No i gra wilkoo13. Tak jak mówiłeś dodałem cin.fail() oraz warunek a == 0;, żeby 0 mi się też łapało jako błąd, bo tak za błędne program uznawał wszystko co nie jest liczbą. do { cin.clear(); cin.sync(); cout << endl; cout << "a = "; cin >> a; if( cin.fail() || a == 0 ) { cout << endl; cout << " Wpisano litere lub 0. Popraw dane! "; cout << endl; } } while( cin.fail() || a == 0 );
Z mojej strony temat do zamknięcia, ale widzę że inny kolega ma pytanie, także można zostawić. |
|
« 1 » |