21xrx.com
2025-03-30 08:23:23 Sunday
文章检索 我的文章 写文章
编写带括号的C++计算器程序
2023-07-01 02:31:31 深夜i     10     0
C++ 计算器程序 括号

C++是一种广泛运用的编程语言,用于创建各种应用程序和工具。若您想尝试创建一个自己的计算器程序,那么本文就会为您提供如何编写带括号的C++计算器程序。

一、定义变量

首先,你需要定义两个变量,一个用来输入表达式,另一个用来存储结果。

string expression;
double result;

二、读取表达式

然后,你需要使用 `getline()` 函数来读取用户输入的表达式。

cout << "请输入表达式: ";
getline(cin, expression);

三、处理括号

在实现计算之前,需要先处理括号。我们可以通过递归的方法来处理。

double calculate(string expression)
{
  // 检测表达式是否包含括号
  int i, len = expression.length();
  for (i = 0; i < len; i++) {
    if (expression[i] == '(') break;
  }
  if (i == len) {
    // 表达式中没有括号,直接进行计算
    return calculate2(expression);
  }
  // 处理括号
  int left_bracket = i, right_bracket = 0;
  int count = 1;
  for (i = left_bracket + 1; i < len; i++) {
    if (expression[i] == '(') count++;
    if (expression[i] == ')') count--;
    if (count == 0) {
      right_bracket = i;
      break;
    }
  }
  string new_expression = expression.substr(left_bracket + 1, right_bracket - left_bracket - 1);
  double value = calculate(new_expression);
  string s_value = to_string(value);
  expression.replace(left_bracket, right_bracket - left_bracket + 1, s_value);
  return calculate(expression);
}

四、执行计算

现在,我们可以执行计算了。首先,需要定义一个核心函数 `calculate2()` 来计算表达式中不包含括号的部分。

double calculate2(string expression)
{
  istringstream iss(expression);
  double num1, num2;
  char op;
  iss >> num1;
  while (iss >> op >> num2) {
    switch (op) {
      case '+':
        num1 += num2;
        break;
      case '-':
        num1 -= num2;
        break;
      case '*':
        num1 *= num2;
        break;
      case '/':
        num1 /= num2;
        break;
    }
  }
  return num1;
}

执行计算的代码如下所示:

result = calculate(expression);
cout << "结果: " << result << endl;

以上,便是我们如何编写带括号的C++计算器程序的全部内容。通过定义变量、读取表达式、处理括号和执行计算,我们可以使计算器程序具有一定的功能。

  
  

评论区

请求出错了