21xrx.com
2024-11-05 16:26:53 Tuesday
登录
文章检索 我的文章 写文章
C++实现四则混合运算代码
2023-07-10 21:01:33 深夜i     --     --
C++ 四则混合运算 实现 代码

C++ 是一门广泛应用于程序开发的编程语言,它在数学计算和数据处理方面有着很好的表现。在程序设计中,四则混合运算是非常基础和常用的一种运算,因此实现四则混合运算的 C++ 代码也非常重要。下面是一份简单实用的 C++ 代码来实现四则混合运算。

首先,我们需要定义一个函数来计算四则混合运算:


int calculate(string s) {

  vector<int> nums;

  vector<char> ops;

  int num = 0;

  int n = s.length();

  for (int i = 0; i < n; i++) {

    char c = s[i];

    if (isdigit(c)) {

      num = num * 10 + (c - '0');

      if (i == n - 1 || !isdigit(s[i + 1])) {

        nums.push_back(num);

        num = 0;

      }

    }

    else if (c == '(') {

      int j = i;

      int cnt = 0;

      for (; i < n; i++) {

        if (s[i] == '(') cnt++;

        if (s[i] == ')') cnt--;

        if (cnt == 0) break;

      }

      nums.push_back(calculate(s.substr(j + 1, i - j - 1)));

    }

    else if (c == '+' || c == '-' || c == '*' || c == '/') {

      ops.push_back(c);

    }

  }

  int ans = nums[0];

  for (int i = 0; i < ops.size(); i++) {

    char op = ops[i];

    int num = nums[i + 1];

    if (op == '+') ans += num;

    if (op == '-') ans -= num;

    if (op == '*') ans *= num;

    if (op == '/') ans /= num;

  }

  return ans;

}

这个函数接受一个字符串 s 作为参数,其中存储了四则混合运算的表达式。在函数中,我们定义了两个向量 nums 和 ops,分别存储了表达式中的数字和操作符。

循环遍历字符串 s 中的所有字符,如果遇到一个数字字符,则将其拼接到 num 中,直到遇到一个不是数字的字符时,num 中的数字就是一个完整的数字,存储到 nums 中。如果遇到一个左括号,则需要寻找与其匹配的右括号,截取中间的字符串递归调用 calculate 函数,并将结果存储到 nums 中。如果遇到一个操作符,则将其存储到 ops 中。最后,我们遍历 ops 和 nums 进行计算,得到表达式的最终结果。

以下是一个使用代码的例子:


int main() {

  string s = "(1+2)*(3+4)";

  cout << calculate(s) << endl;

  return 0;

}

输出结果应该为 21。

我们可以将这个代码用于简单的计算器、表达式求解等领域,进一步拓展其功能,实现更为复杂的应用。

  
  

评论区

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