[C++] kalkulator - nie działają funkcje cin.good i cin.fail
Ostatnio zmodyfikowano 2013-05-24 01:13
klaudia2509 Temat założony przez niniejszego użytkownika |
[C++] kalkulator - nie działają funkcje cin.good i cin.fail » 2013-05-23 23:08:55 Mam problem. Napisałam kalkulator i użyłam funkcji cin.good i cin.fail w pewnym miejscu w kodzie (poniżej zamieszam kod.) Po wpisaniu litery jako zmiennej do programu funkcje działają poprawnie. Jednak po wykonaniu działania np. dodawania i ponownym wpisaniu liczby program wyswietla, że litera to liczba i powraca do ostatniego wykonanego działanie, czyli w tym przypoadku dodawania. opiszę co trzeba zrobić, aby zauwazyc błąd: 1. Uruchom program i wybierz 1 z menu 2. Wykonaj działanie, a potem, po wyświetleniu "Wybierz działanie" wprowadź litere. Jak mam usunąć ten błąd? I co w ogóle jest nie tak? Z góry dziękuję za pomoc. Pozdrawiam #include <iostream> #include <cstdio> #include <math.h>
using namespace std;
int main()
{ int liczba; float czynnik_1, czynnik_2, wykladnik, podstawa, skladnik_1, skladnik_2, odjemna, odjemnik, dzielna; unsigned long liczba_podpierwiastkowa, dzielnik; do { cin.clear(); cin.sync(); cout << endl << "1.Dodawanie" << endl; cout << "2.Odejmowanie" << endl; cout << "3.Mnozenie" << endl; cout << "4.Dzielenie" << endl; cout << "5.Potegowanie" << endl; cout << "6.Pierwiastkowanie kwadratowe" << endl; cout << "7.Wyjscie" << endl; cout << endl << " Wpisz odpowiednia cyfre z menu, aby wybrac dzialanie." << endl; cin.clear(); cin.sync(); cin >> liczba; cin.clear(); cin.sync(); if( liczba <= 7 && liczba > 0 ) cout << endl << "Tak, to jest liczba z menu" << cin.good() << endl; else cout << endl << "Przeczytaj uwaznie - wybierz LICZBE z MENU. Sprobuj jeszcze raz." << cin.fail() << endl; cin.clear(); cin.sync(); if( liczba > 0 && liczba < 7 ) { switch( liczba ) { case 1: cout << endl << "Wybrales dodawanie." << endl; cout << endl << "Podaj pierwszy sk³adnik: "; cin >> skladnik_1; cout << endl << "Podaj drugi sk³adnik: "; cin >> skladnik_2; cout << endl << skladnik_1 << "+" << skladnik_2 << "=" << skladnik_1 + skladnik_2 << endl; cin.clear(); cin.sync(); break; case 2: cout << endl << " Wybrales odejmowanie." << endl; cout << endl << " Podaj odjemna "; cin >> odjemna; cout << endl << " Podaj odjemnik: "; cin >> odjemnik; cout << endl << odjemna << "-" << odjemnik << "=" << odjemna - odjemnik << endl; cin.clear(); cin.sync(); break; case 3: cout << endl << " Wybrales mnozenie." << endl; cout << endl << "Podaj pierwszy czynnik: "; cin >> czynnik_1; cout << endl << "Podaj drugi czynnik: "; cin >> czynnik_2; cout << endl << czynnik_1 << "*" << czynnik_2 << "=" << czynnik_1 * czynnik_2 << endl; cin.clear(); cin.sync(); break; case 4: cout << endl << " Wybrales dzielenie." << endl; cout << endl << "Podaj dzielna: "; cin >> dzielna; cout << endl << "Podaj dzielnik: "; cin >> dzielnik; cout << endl << dzielna << "/" << dzielnik << "=" << dzielna / dzielnik << endl; cin.clear(); cin.sync(); break; case 5: cout << endl << " Wybrales potegowanie." << endl; cout << endl << "Podaj podstawe: "; cin >> podstawa; cout << endl << "Podaj wykladnik: "; cin >> wykladnik; cout << endl << podstawa << "do potegi " << wykladnik << "=" << pow( podstawa, wykladnik ) << endl; cin.clear(); cin.sync(); break; case 6: cout << endl << " Wybrales pierwiastkowanie kwadratowe." << endl; cout << endl << "Podaj liczbe podpierwiastkowa: "; cin >> liczba_podpierwiastkowa; cout << endl << "Pierwiastek kwadratowy z " << liczba_podpierwiastkowa << " = " << sqrt( liczba_podpierwiastkowa ) << endl; cin.clear(); cin.sync(); break; } } if( liczba == 7 ) { cout << "Do widzenia!" << endl; return 0; } } while( liczba > 0 && liczba < 8 ); return 0; }
|
|
DejaVu |
» 2013-05-24 01:13:33 1. Poczytaj o funkcjach 2. cin.clear oraz cin.sync powinnaś używać po każdym wczytaniu liczby. |
|
« 1 » |