Почему этот код, который должен запрашивать операцию, а затем выполнять необходимые вычисления не работает - PullRequest
0 голосов
/ 23 октября 2019
include using namespace std;

int main() {
  float n1, n2, sum, diff, pro, quot;
  char f;

  cout << "PLease enter your function(A,S,D,M or X to end the program" << endl;
  cin >> f;

  while (f != 'A', 'S', 'D', 'M', 'X') {
    cout << "Invalid Operation" << endl;
    cout << "PLease enter your function(A,S,D,M or X to end the program"
         << endl;
    cin >> f;
  }

  if (f == 'X') return 0;
  if (f == 'A', 'S', 'D', 'M') {
    cout << "Please enter two numbers";
    cin >> n1 >> n2;

    if (f == 'A') {
      sum = n1 + n2;
      cout << sum;
    }

    else if (f == 'S') {
      if (n1 > n2) {
        diff = n1 - n2;
        cout << diff;
      } else {
        diff = n2 - n1;
        cout << diff;
      }
    } else if (f == 'D') {
      if (n1 > n2) {
        quot = n1 / n2;
        cout << quot;
      } else {
        quot = n2 / n1;
        cout << quot;
      }
    } else if (f == 'M') {
      pro = n1 * n2;
      cout << pro;
    }
  }

  return 0;
}

Не принимает A, S, M, D

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Ваше while утверждение является проблемой. Он использует выражение запятой, а это не то, что вам нужно, потому что в конечном итоге он получает значение «X». Вам нужно сравнить f с каждым из ваших вариантов отдельно.

Один из способов сделать это - расширить сравнение в операторе while до чего-то вроде

while (f != 'A' && f != 'S' && f != 'D' && f != 'M' && f != 'X')
{
  ...
}

То же самоеверно для вашего утверждения if несколькими строками ниже.

0 голосов
/ 23 октября 2019

Проблема с вашим кодом заключается в том, что логика не находится внутри цикла while, поэтому она не может пройти через все необходимые операции, поэтому я отредактировал ваш код и применил некоторые изменения.

Изменения:

-> Я удалил первую cout вашего кода, поскольку вам нужен только один «оператор ввода», который находится внутри вашего цикла while.

-> Я поместилусловные операторы внутри вашего цикла while.

-> Я добавил новый оператор else, чтобы поместить слово «Invalid Operation»

using namespace std;

int main()
{
    float n1,n2,sum,diff,pro,quot; char f;

    while (f!='A','S','D','M','X'){
        cout<<"Please enter your function(A,S,D,M or X to end the program"<<endl;
        cin>>f;

        if(f=='X'){
           return 0; 
        }
        else if (f=='A'){
            cout<<"Add";
            sum=n1+n2; 
            cout<<sum<<endl;
        }
        else if (f=='S'){
            cout<<"Subtract";
            if (n1>n2){
                diff=n1-n2;
                cout<<diff<<endl;
            }
            else{
                diff=n2-n1;
                cout<<diff<<endl;
            }
        }
        else if (f=='M'){
            cout<<"Multiply";
            pro=n1*n2; 
            cout<<pro<<endl;
        }
        else if (f=='D'){
            cout<<"Divide";
            if (n1>n2){
                quot=n1/n2;
                cout<<quot<<endl;
            }
            else{
                quot=n2/n1;
                cout<<quot<<endl;
            }

        }
        else{
            cout<<"Invalid Operation"<<endl;
        }
    }

    return 0;
}
...