Kalkulator - Zapętlanie głównej pętli do_while

0

Cześć, napisałem program - kalkulator.
Problem pojawia się przy zapętleniu części kodu (wkleję jedynie fragment mnie interesujący, mianowicie "menu" z wyborem działania).

#include <iostream>

using namespace std;

int main()
{
    double a;
    double b;
    int dzialanie;

    do
    {
    cout << "Wybierz jakie dzialanie chcesz wykonac:" << endl;
    cout << "(1) Dodawanie." << endl;
    cout << "(2) Odejomowanie." << endl;
    cout << "(3) Mnozenie." << endl;
    cout << "(4) Dzielenie." << endl;
    cout << "(5) Potegowanie." << endl;

    cin >> dzialanie;
    } while (dzialanie=1, dzialanie=2, dzialanie=3, dzialanie=4, dzialanie=5);
    return 0;
}

(Te dwie zmienne na początku służą do obliczeń w dalszej części kodu w pełnym programie).
Funkcja do_while powinna spowodować, że w konsoli będzie się wyświetlało to menu do oporu, aż użytkownik nie wpisze: 1/2/3/4 lub 5.
W rzeczywistości zapętla się niezależnie od tego, co wpiszę :d
Poza tym, jeśli wpiszę jakąś literę, np "g" program zapętla się w nieskończoność - to znaczy nawet nie prosi mnie o ponowne podanie zmiennej "dzialanie" tylko ciągiem wyświelta to menu.
Jeśli zmienię typ tej zmiennej na char, to tego problemu nie ma ale z drugiej strony nie działa mi później żadne z obliczeń w switchu z obliczeniami.
Proszę o rozwiązanie problemu z tą pętla, a to ze zmiennymi to bonus jakby się komuś chciało :d

0

to:
while (dzialanie=1, dzialanie=2, dzialanie=3, dzialanie=4, dzialanie=5);
powinno być tak:
while (dzialanie!=1 && dzialanie!=2 && dzialanie!=3 && dzialanie!=4 && dzialanie!=5);
Tak na szybkiego mi się to quote napisało :)

0
while (dzialanie < 1 && dzialanie > 5);

za pomocą chara też można, tylko pamiętaj że char przechowuje kod acii.

0

A nie prościej dla ciebie oraz dla potencjalnego użytkownika:

#include <iostream>
using namespace std;
 
int main()
  {
    double a,b;
    char op; 
    while(cin>>a>>op>>b)
      {
       cout<<"Wykonuje działanie "<<op<<" nad liczbami "<<a<<" i "<<b<<endl;
      }
   return 0;
  }
0
Adam Programmer napisał(a):

to:
while (dzialanie=1, dzialanie=2, dzialanie=3, dzialanie=4, dzialanie=5);
powinno być tak:
while (dzialanie!=1 && dzialanie!=2 && dzialanie!=3 && dzialanie!=4 && dzialanie!=5);
Tak na szybkiego mi się to quote napisało :)

Działa, ale jak wpisuje jakąs literę to dalej zapętla się w nieskonczoność.

Może i prościej by było, ale takim schematem wykładowca kazał to zrobić :F

1 użytkowników online, w tym zalogowanych: 0, gości: 1