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

kalkulator program z pętla do-while

Ostatnio zmodyfikowano 2012-12-16 22:58
Autor Wiadomość
Jxin
Temat założony przez niniejszego użytkownika
kalkulator program z pętla do-while
» 2012-12-16 21:41:23
Witam.

Otóż staram się program przed w wpisaniem nieoczekiwanych znaków. Program ogólnie nie ma błędów, lecz jednak podczas działania wpiszę "nieoczekiwany znak" zapętla się. walczę już 2 godzinę kombinując między innymi zmieniając operatory  w konstrukcji WHILE lecz bez skutecznie. Chciałbym, aby program powtórzył się od początku (a nie zapętlał) gdy wpiszemy np literę zamiast liczby. HELP !
C/C++
#include <iostream>
using namespace std;

int main()

{
    float liczba1, liczba2, wynik;
    bool a, b, c;
    int dzialanie, d = 1;
   
   
    cout << "=========================" << endl << endl;
    cout << "KALKULATOR 2012.16.12 " << endl << endl;
   
    do
    {
       
       
        cin.sync();
        cin.clear();
       
        cout << "Podaj pierwsza liczbe : " << endl;
        cin >> liczba1;
        cin.good();
        a = cin.good();
       
        cin.sync();
        cin.clear();
       
        cout << "Podaj druga liczbe : " << endl;
        cin >> liczba2;
        cin.good();
        b = cin.good();
       
       
       
        cin.sync();
        cin.clear();
        cout << "Wybierz dzialanie : " << endl << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Dzielenie" << endl;
        cout << "[4] Mnozenie" << endl;
        cout << "[5] Rezygnuj" << endl;
        cin >> dzialanie;
        cin.good();
        c = cin.good();
       
        if( dzialanie <= 4 && c == 1 && a == 1 && b == 1 )
        {
           
            switch( dzialanie )
            {
               
            case 1:
                {
                    wynik = liczba1 + liczba2;
                    cout << liczba1 << "+" << liczba2 << "=" << wynik << endl;
                    break;
                }
            case 2:
                {
                    wynik = liczba1 - liczba2;
                    cout << liczba1 << "-" << liczba2 << "=" << wynik << endl;
                    break;
                }
            case 3:
                {
                    wynik = liczba1 / liczba2;
                    cout << liczba1 << "/" << liczba2 << "=" << wynik << endl;
                    break;
                }
            case 4:
                {
                    wynik = liczba1 * liczba2;
                    cout << liczba1 << "*" << liczba2 << "=" << wynik << endl;
                    break;
                }
                default:
                cout << "" << endl;
            }
           
        } else cout << " Błąd, wpisales znak" << endl;
       
    } while(); kombinowa ł em na r ó ż ne sposoby z operatorami, lecz wci ą ż ten sam b ł ą d.
    return 0;
}
P-71240
Jxin
Temat założony przez niniejszego użytkownika
» 2012-12-16 21:51:35
Damn czemu program w osobnym oknie się nie pokazuje ??
P-71243
ison
» 2012-12-16 22:08:08
[cpp] kod [/cpp]
P-71245
Jxin
Temat założony przez niniejszego użytkownika
» 2012-12-16 22:21:53
Dzięki za informację.
a wracając do tematu, ma ktoś jakieś pomysły, jak rozwiązać dany problem z programem ?
P-71247
tirou
» 2012-12-16 22:40:02
C/C++
#include <iostream>
using namespace std;

int main()

{
    float liczba1, liczba2, wynik;
    bool a, b, c, q = true;
    int dzialanie, d = 1;
   
   
    cout << "=========================" << endl << endl;
    cout << "KALKULATOR 2012.16.12 " << endl << endl;
   
    do
    {
        bool w = true;
       
        while( w )
        {
            w = false;
           
            cout << "Podaj pierwsza liczbe : " << endl;
            cin >> liczba1;
            cin.good();
            a = cin.good();
            cin.clear();
            cin.sync();
            if( !a ) w = true;
           
        }
        cin.sync();
        cin.clear();
       
        cout << "Podaj druga liczbe : " << endl;
        cin >> liczba2;
        cin.good();
        b = cin.good();
       
       
       
        cin.sync();
        cin.clear();
        cout << "Wybierz dzialanie : " << endl << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Dzielenie" << endl;
        cout << "[4] Mnozenie" << endl;
        cout << "[5] Rezygnuj" << endl;
        cin >> dzialanie;
        cin.good();
        c = cin.good();
       
        if( dzialanie <= 4 && c == 1 && a == 1 && b == 1 )
        {
           
            switch( dzialanie )
            {
               
            case 1:
                {
                    wynik = liczba1 + liczba2;
                    cout << liczba1 << "+" << liczba2 << "=" << wynik << endl;
                    break;
                }
            case 2:
                {
                    wynik = liczba1 - liczba2;
                    cout << liczba1 << "-" << liczba2 << "=" << wynik << endl;
                    break;
                }
            case 3:
                {
                    wynik = liczba1 / liczba2;
                    cout << liczba1 << "/" << liczba2 << "=" << wynik << endl;
                    break;
                }
            case 4:
                {
                    wynik = liczba1 * liczba2;
                    cout << liczba1 << "*" << liczba2 << "=" << wynik << endl;
                    break;
                }
                default:
                cout << "" << endl;
            }
           
        } else cout << " B³¹d, wpisales znak" << endl;
       
    } while( q );
   
    return 0;
}

z pierwsza liczba takie cos wykombinowalem, ponadto dodalem zmienna q, gdyz cos musi byc przy warunku ( while(q) ).
Oraz nie masz warunku wyjscia z petli, gdy nacisniesz rezygnuj wyswietla blad.

pozdrawiam
P-71249
DejaVu
» 2012-12-16 22:45:13
C/C++
cin.sync();
cin.clear();
Zła kolejność powyższych linii.
P-71250
tirou
» 2012-12-16 22:53:36
Tak, ja u siebie tez poprawilem jak sie przyjrzysz.
P-71251
Jxin
Temat założony przez niniejszego użytkownika
» 2012-12-16 22:58:16
Dejavu dzięki, zapamiętam,

zaś Tirou dzięki za pomoc, co do opcji REZYGNUJ zostawiłem ze względu na ten problem, ale zaraz dokończę.
Pozdrawiam!
P-71252
« 1 »
  Strona 1 z 1