Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] kalkulator - nie działają funkcje cin.good i cin.fail

Ostatnio zmodyfikowano 2013-05-24 01:13
Autor Wiadomość
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

C/C++
#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;
}
P-83753
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.
P-83762
« 1 »
  Strona 1 z 1