21xrx.com
2024-09-20 05:42:17 Friday
登录
文章检索 我的文章 写文章
C++ 实现简单算术表达式求值
2023-07-04 07:44:35 深夜i     --     --
C++ 算术表达式 求值

在程序设计语言中,算术表达式求值是一项基本的任务。 C++是一个功能强大的编程语言,可以轻松地实现算术表达式求值。

C++ 中的算术表达式可以包含数字、运算符和括号。例如,下面的表达式是一个算术表达式:(3 + 5) * 7 - 2。

要实现算术表达式求值,可以使用以下步骤:

1. 将算术表达式转换为逆波兰表达式。

2. 使用栈来计算逆波兰表达式。

逆波兰表达式的优点是每个运算符都在其操作数之后,这样就不需要使用括号。例如,上述算术表达式的逆波兰表达式为:3 5 + 7 * 2 -。

现在,我们可以使用栈来计算逆波兰表达式。将逆波兰表达式逐个读取,并将所有操作数和运算符压入栈中。每次遇到运算符时,就弹出它的两个操作数,并将计算结果压入栈中,直到所有表达式都被计算。

下面是一个简单的C++程序,用于实现算术表达式求值:

#include

#include

#include

using namespace std;

bool isOperator(char);

int performOperation(char, int, int);

int main()

{

  string expression;

  cout << "Enter an expression: ";

  getline(cin, expression);

  stack s;

  for (int i = 0; i < expression.length(); i++) {

    if (expression[i] == ' ' || expression[i] == ',') continue;

    else if (isOperator(expression[i])) {

      int operand2 = s.top();

      s.pop();

      int operand1 = s.top();

      s.pop();

      int result = performOperation(expression[i], operand1, operand2);

      s.push(result);

    }

    else if (isdigit(expression[i])) {

      int operand = 0;

      while (i < expression.length() && isdigit(expression[i])) {

        operand = operand * 10 + (expression[i] - '0');

        i++;

      }

      i--;

      s.push(operand);

    }

  }

  cout << "Result: " << s.top();

  return 0;

}

bool isOperator(char c)

{

  if (c == '+' || c == '-' || c == '*' || c == '/') return true;

  return false;

}

int performOperation(char operation, int operand1, int operand2)

{

  if (operation == '+') return operand1 + operand2;

  else if (operation == '-') return operand1 - operand2;

  else if (operation == '*') return operand1 * operand2;

  else if (operation == '/') return operand1 / operand2;

  else cout << "Unexpected error." << endl;

  return -1;

}

在上面的程序中,我们首先使用 getline() 函数从用户处获取算术表达式。然后,我们创建了一个整数类型的栈。接下来,我们遍历算术表达式,并根据遇到的每个字符执行相应的操作。

如果遇到空格或逗号,则跳过当前迭代。如果遇到运算符,则从栈中弹出两个操作数,并使用该运算符对它们进行计算,将结果压入堆栈中。如果遇到数字,则该数字被完全读取并作为整数类型压入堆栈中。

最后,程序输出计算结果。

实现算术表达式求值需要一定的理解和编程能力。但是,C++这样的编程语言提供了足够的工具和资源,可以让我们轻松地实现这个任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复