holyya.com
2025-09-04 15:24:01 Thursday
登录
文章检索 我的文章 写文章
编写带括号的C++计算器程序
2023-07-01 02:31:31 深夜i     --     --
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++计算器程序的全部内容。通过定义变量、读取表达式、处理括号和执行计算,我们可以使计算器程序具有一定的功能。

  
  

评论区

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