math — вычисляет много значений с помощью многих арифметических операторов. Переполнение стека

  1. #ifndef CALC_H
    #define CALC_Hclass calc
    {
    double numb1;
    double numb2;
    public:
    calc();
    void FUN_SUM();
    void FUN_Subtraction();
    void FUN_Multiplication();
    void FUN_Division();
    void FUN_Power();
    void FUN_Squareroot();
    void FUN_Switch();
    void FUN_Loob();
    
    };
    
    #endif // CALC_H#include "calc.h"#include <iostream>
    #include <cmath>
    using namespace std;
    calc::calc()
    {
    numb1 = 0;
    numb2 = 0;
    }
    void calc::FUN_SUM()
    {
    cout << "Enter number 1 " << endl;
    cin >> numb1;
    cout << "Enter number 2 " << endl;
    cin >> numb2;
    double Result_Of_Sum;
    Result_Of_Sum = numb1+numb2;
    cout << "The result of Sum = " << Result_Of_Sum << endl;}
    
    void calc::FUN_Subtraction()
    {
    cout << "Enter number 1 " << endl;
    cin >> numb1;
    cout << "Enter number 2 " << endl;
    cin >> numb2;
    double Result_Of_Subtraction;
    Result_Of_Subtraction = numb1 - numb2;
    cout << "The result of Subtraction = " << Result_Of_Subtraction << endl;
    }
    void calc::FUN_Multiplication()
    {
    cout << "Enter number 1 " << endl;
    cin >> numb1;
    cout << "Enter number 2 " << endl;
    cin >> numb2;
    double Result_Of_Multiplication;
    Result_Of_Multiplication = numb1*numb2;
    cout << "The result of Multiplication = " << Result_Of_Multiplication << endl;
    
    }
    
    void calc::FUN_Division()
    {
    cout << "Enter number 1 " << endl;
    cin >> numb1;
    cout << "Enter number 2 " << endl;
    cin >> numb2;
    double Result_Of_Division ;
    Result_Of_Division = numb1/numb2;
    cout << "The result of Division = " << Result_Of_Division << endl;
    }
    
    void calc::FUN_Power()
    {
    cout << "Enter number 1 " << endl;
    cin >> numb1;
    cout << "Enter number 2 " << endl;
    cin >> numb2;
    double Result_Of_Power;
    Result_Of_Power = pow(numb1,numb2);
    cout << "The result of Power = " << Result_Of_Power << endl;
    }
    
    void calc::FUN_Squareroot()
    {
    cout << "Enter the tow number you want Square root \n";
    cin >> numb1;
    
    double Result_Of_Square_root;
    Result_Of_Square_root = sqrt(numb1);
    cout << "The result of Square root = " << Result_Of_Square_root << endl;
    }
    void calc::FUN_Switch()
    {
    int S;
    cout << "Enter the number you operator do you want do it  " << endl;
    cout << "1- Addition" << endl;
    cout << "2- Subtraction" << endl;
    cout << "3- Multiplication" << endl;
    cout << "4- Division" << endl;
    cout << "5- Power" << endl;
    cout << "6- Square Root" << endl;
    cout << "7- Exit" << endl;
    cin >> S;
    
    switch (S)
    {
    case 1:
    
    FUN_SUM();
    break;
    
    case 2:
    
    FUN_Subtraction();
    break;
    
    case 3:
    
    FUN_Multiplication();
    break;
    
    case 4:
    
    FUN_Division();
    break;
    
    case 5:
    
    FUN_Power();
    break;
    
    case 6:
    
    FUN_Squareroot();
    break;
    
    default :
    break;
    
    }
    }
    
    void calc::FUN_Loob()
    {
    char L;
    
    do
    {
    
    FUN_Switch();
    
    cout << "Do you want do another operator ( 'y' or 'n'?) \n";
    cin >> L;
    if (L== 'y' || L=='Y' || L=='n' || L=='N')
    
    continue;
    else
    cout << "you are enter roang later\n";
    
    }
    
    while (L == 'Y' || L == 'y' );
    
    }#include <iostream>
    #include "calc.h"using namespace std;
    
    int main()
    {
    cout << "Welcome to my simple Calculator\n";
    calc simple_calc;
    
    simple_calc.FUN_Loob();
    cout << "\n Tank you for use my App :) :) " << endl;
    
    return 0;
    }
    

Мой вопрос заключается в том, как я могу включить пользователь Calc любое значение с помощью операторов, как обычный калькулятор

например 1 + 9 * 8-1 + 5 я хочу, чтобы моя программа делала так, но я не знаю как ?? 🙁 🙁

-5

Решение

Написание калькулятора — непростая задача, так как она требует большего:

  1. Приоритет оператора
  2. группирование
  3. Оценка выражений

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

группирование
Более продвинутый калькулятор позволит группировать выражения, используя круглые скобки. Калькулятор должен уметь оценивать внутреннее выражение и работать наружу.

Оценка выражений
Это означает, что допускается использование более 1 цифры и пробелов между цифрами и символами. Кроме того, когда выражение разобранный, это нужно оценить. Калькулятор должен вызывать соответствующие функции в зависимости от операции (указанной пользователем).

Я предлагаю вам разрешить пользователю вводить выражение, а ваша программа — читать его как строку. Ваша программа будет разбор строку, затем оцените выражение (я).

Ищите в Интернете и StackOverflow «калькулятор c ++» для примеров.

0

Другие решения