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 ! #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; }
|
|
Jxin Temat założony przez niniejszego użytkownika |
» 2012-12-16 21:51:35 Damn czemu program w osobnym oknie się nie pokazuje ?? |
|
ison |
» 2012-12-16 22:08:08 [cpp] kod [/cpp] |
|
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 ? |
|
tirou |
» 2012-12-16 22:40:02 #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 |
|
DejaVu |
» 2012-12-16 22:45:13 Zła kolejność powyższych linii. |
|
tirou |
» 2012-12-16 22:53:36 Tak, ja u siebie tez poprawilem jak sie przyjrzysz. |
|
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! |
|
« 1 » |