Zapętlony kalkulator - co tu jest źle?
Ostatnio zmodyfikowano 2013-05-18 20:14
jaro98 Temat założony przez niniejszego użytkownika |
Zapętlony kalkulator - co tu jest źle? » 2013-05-18 18:56:58 Próbowałem napisać kalkulator posiłkując się lekcją 15, niestety nie zapętla się. Działa tylko raz i koniec. Co jest źle poniżej? #include<iostream> using namespace std; int main() { int liczba; do { cin.sync(); cin.clear(); cout << "Niniejszy kalkulator obsluguje 4 typy dzialan dla dwoch liczb" << endl; cout << "[1] dodawanie" << endl; cout << "[2] odejmowanie" << endl; cout << "[3] mnozenie" << endl; cout << "[4] dzielenie" << endl; cout << "[5] rezygnuj" << endl; cout << "Wpisz liczbe odpowiadajaca danemu dzialaniu, by je przeprowadzic:" << endl; cin >> liczba; switch( liczba ) { case 1: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz dodac (po kazdej nacisnij enter) :" << endl; cin >> a; cout << endl; cin >> b; cout << endl; cout << "Wynik dodawania to:" << a + b << endl; } break; case 2: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz odjac (od pierwszej druga), po kazdej nacisnij enter:" << endl; cin >> a; cout << endl; cin >> b; cout << endl; cout << "Wynik odejmowania to:" << a - b << endl; } break; case 3: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz pomnozyc (po kazdej nacisnij enter):" << endl; cin >> a; cout << endl; cin >> b; cout << endl; cout << "Wynik mnozenia to:" << a * b << endl; } break; case 4: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz podzielic (pierwsza przez druga), po kazdej nacisnij enter:" << endl; cin >> a; cout << endl; cin >> b; cout << endl; if( b != 0 ) cout << "Wynik dzielenia to:" << a / b << endl; else cout << "Nie mozna przeprowadzic dzielenia, gdyz nie mozna dzielic przez 0" << endl; } break; case 5: cout << "Zrezygnowano z dzialania, nastapi zakonczenie programu."; break; default: cout << "Nie wybrano zadnego dzialania, wybiez jeszcze raz." << endl; } } while( liczba =!5 ); return 0; } |
|
Forczek |
» 2013-05-18 19:41:43 Skoro źle się zapętla, znaczy jeden raz. To sprawdź warunek. Wróć do lekcji itp. |
|
Tebex |
no cóż » 2013-05-18 19:57:23 #include<iostream> using namespace std; int main() { int liczba = 0; do { cin.clear(); cin.sync(); cout << "Niniejszy kalkulator obsluguje 4 typy dzialan dla dwoch liczb" << endl; cout << "[1] dodawanie" << endl; cout << "[2] odejmowanie" << endl; cout << "[3] mnozenie" << endl; cout << "[4] dzielenie" << endl; cout << "[5] rezygnuj" << endl; cout << "Wpisz liczbe odpowiadajaca danemu dzialaniu, by je przeprowadzic:" << endl; cin >> liczba; switch( liczba ) { case 1: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz dodac (po kazdej nacisnij enter) :" << endl; cin >> a; cout << endl; cin >> b; cout << endl; cout << "Wynik dodawania to:" << a + b << endl; } break; case 2: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz odjac (od pierwszej druga), po kazdej nacisnij enter:" << endl; cin >> a; cout << endl; cin >> b; cout << endl; cout << "Wynik odejmowania to:" << a - b << endl; } break; case 3: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz pomnozyc (po kazdej nacisnij enter):" << endl; cin >> a; cout << endl; cin >> b; cout << endl; cout << "Wynik mnozenia to:" << a * b << endl; } break; case 4: { long double a; long double b; cout << "Wpisz kolejno obie liczby, ktore chcesz podzielic (pierwsza przez druga), po kazdej nacisnij enter:" << endl; cin >> a; cout << endl; cin >> b; cout << endl; if( b != 0 ) cout << "Wynik dzielenia to:" << a / b << endl; else cout << "Nie mozna przeprowadzic dzielenia, gdyz nie mozna dzielic przez 0" << endl; } break; case 5: cout << "Zrezygnowano z dzialania, nastapi zakonczenie programu."; return false; default: cout << "Nie wybrano zadnego dzialania, wybierz jeszcze raz." << endl; } } while( true ); return 0; }
|
|
jaro98 Temat założony przez niniejszego użytkownika |
» 2013-05-18 19:58:06 Zgodnie z założeniem powinno kończyć program, tylko, gdy wybierze się 5, więc warunek, to 5 różne od zera (dla 5 będzie fałsz i przerwie pętlę). Ale nie działa, wykonuje dany "case" tylko raz dla każdej liczby i znaku. |
|
dambo |
» 2013-05-18 20:03:14 Witam, jest błąd w warunku pętli: zamiast "while( liczba =!5 );" powinno być "while( liczba != 5 );". |
|
Tebex |
tak » 2013-05-18 20:05:24 tez to zobaczylem ale dopiero po chwili |
|
jaro98 Temat założony przez niniejszego użytkownika |
» 2013-05-18 20:14:15 A rzeczywiście, dzięki ;) |
|
« 1 » |