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

Zapętlony kalkulator - co tu jest źle?

Ostatnio zmodyfikowano 2013-05-18 20:14
Autor Wiadomość
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?

C/C++
#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;
}
P-83233
Forczek
» 2013-05-18 19:41:43
Skoro źle się zapętla, znaczy jeden raz. To sprawdź warunek. Wróć do lekcji itp.
P-83238
Tebex
no cóż
» 2013-05-18 19:57:23
C/C++
// ten program dziala tak jak bys chcial lecz sa w nim rzeczy o ktorych sie jeszcze nie uczyles
#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; // tego na razie nie musisz rozumiec
           
        default:
            cout << "Nie wybrano zadnego dzialania, wybierz jeszcze raz." << endl;
        }
    }
    while( true ); //tego tez(true)
   
   
    return 0;
}
P-83239
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.
P-83240
dambo
» 2013-05-18 20:03:14
Witam, jest błąd w warunku pętli: zamiast "while( liczba =!5 );" powinno być "while( liczba != 5 );".
P-83241
Tebex
tak
» 2013-05-18 20:05:24
tez to zobaczylem ale dopiero po chwili
P-83242
jaro98
Temat założony przez niniejszego użytkownika
» 2013-05-18 20:14:15
A rzeczywiście, dzięki ;)
P-83247
« 1 »
  Strona 1 z 1