2015-11-07 2 views
-3

Так что я пытаюсь сделать калькулятор, который работает с несколькими операторами. Я делаю некоторые программы калькуляторов, которые работают с 2-мя номерами (используется переключатель), но когда я пытаюсь использовать более двух чисел, я не могу заставить его работать. У меня есть идея, как это сделать, но я не могу ее реализовать (я новичок в программировании). Эта строка не работает, но это то, что я думаю: result = a op [0] b op [1] c; Так вот код:C++ несколько операторов калькулятор

// Simple arithmetic calculator. 
#include <iostream> 
using namespace std; 


int main() 
{ 
    float a, b, c, result; 
    char op[2]; 

    // Get numbers and mathematical operator from user input 
    cin >> a >> op[0] >> b >> op[1] >> c; 
result = a op[0] b op[1] c; // result = a + b - c if op[0]=+ and op[1]=- 
    // Output result 
    cout << result << endl; 
    return 0; 
} 

вот другой код, но не работает

// CalculatorSwitch.cc 
// Simple arithmetic calculator using switch() selection. 

#include <iostream> 
using namespace std; 

int main() 
{ 
    float a, b, c, result; 
    char operation,operation2; 

    // Get numbers and mathematical operator from user input 
    cin >> a >> operation >> b >> operation2 >> c; 

    // Character constants are enclosed in single quotes 
    switch(operation) 
    { 
    case '+': 
     result = a + b; 
     break; 

    case '-': 
     result = a - b; 
     break; 

    case '*': 
     result = a * b; 
     break; 

    case '/': 
     result = a/b; 
     break; 

    default: 
     cout << "Invalid operation. Program terminated." << endl; 
     return -1; 
    } 
    switch(operation2) 
    { 
    case '+': 
     result = b + c; 
     break; 

    case '-': 
     result = b - c; 
     break; 

    case '*': 
     result = b * c; 
     break; 

    case '/': 
     result = b/c; 
     break; 

    default: 
     cout << "Invalid operation. Program terminated." << endl; 
     return -1; 
    } 
} 

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

+1

Вы не заметили, что это даже не компилируется? –

+0

Если 'switch' работал с двумя номерами, почему бы вам не использовать, например. 'switch' здесь для трех чисел? – SaschaP

ответ

0

Ваша логика неправильная. В первом операторе switch вы устанавливаете result = a OP1 b. В вашем втором переключателе вы установили result = b OP2 c, полностью переопределив то, что сделал первый переключатель. Вместо этого вам нужно работать с промежуточным результатом, например. изменить свой второй переключатель

switch(operation2) 
{ 
case '+': 
     result = result + c; 
     break; 

case '-': 
     result = result - c; 
     break; 

case '*': 
     result = result * c; 
     break; 

case '/': 
     result = result/c; 
     break; 

default: 
     cout << "Invalid operation. Program terminated." << endl; 
     return -1; 
} 

Заметим, однако, что это все неправильно, так как она не учитывает порядок операций, если первый оператор + или - и второй один * или /.

Чтобы сделать первый код работы, требуется больше, чем этот ответ, создание полного математического анализатора вовсе не тривиально.

Смежные вопросы