C++实现多功能计算器

2024年 1月 31日 87.3k 0

在现代编程实践中,C++以其高效性、可扩展性和面向对象的特性被广泛应用。本文旨在介绍如何使用C++编写一个功能更加丰富的计算器程序,该程序不仅能够执行基本的数学运算,还能处理更复杂的表达式,并提供用户友好的交互界面。

一、功能设计

多功能计算器将包含以下特性:

  • 支持加、减、乘、除四则运算。
  • 支持括号,以处理运算优先级。
  • 提供用户输入验证,确保输入的表达式合法。
  • 支持连续运算,即用户可以在一次输入中完成多个运算。
  • 显示运算结果和可能的错误信息。

二、代码实现

为了实现上述功能,我们需要编写一个能够解析和计算数学表达式的程序。下面是一个简化版的C++多功能计算器程序:

#include
#include
#include
#include

using namespace std;

double compute(double a, double b, char op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return (b != 0) ? a / b : throw invalid_argument("除数不能为0");
default: throw invalid_argument("无效的运算符");
}
}

double evaluateExpression(string s) {
stack values;
stack ops;

for (size_t i = 0; i < s.size(); ++i) {
if (isdigit(s[i])) {
size_t j = i;
while (j < s.size() && (isdigit(s[j]) || s[j] == '.')) j++;
double value = stod(s.substr(i, j - i));
values.push(value);
i = j - 1;
} else if (s[i] == ' ') {
continue;
} else if (s[i] == '(') {
ops.push(s[i]);
} else if (s[i] == ')') {
while (!ops.empty() && ops.top() != '(') {
double val2 = values.top(); values.pop();
double val1 = values.top(); values.pop();
char op = ops.top(); ops.pop();
values.push(compute(val1, val2, op));
}
if (!ops.empty()) ops.pop(); // 弹出'('
} else if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/') {
while (!ops.empty() &&
(s[i] == '+' || s[i] == '-' ||
(s[i] == '*' || s[i] == '/') && (ops.top() == '*' || ops.top() == '/'))) {
double val2 = values.top(); values.pop();
double val1 = values.top(); values.pop();
char op = ops.top(); ops.pop();
values.push(compute(val1, val2, op));
}
ops.push(s[i]);
}
}

while (!ops.empty()) {
double val2 = values.top(); values.pop();
double val1 = values.top(); values.pop();
char op = ops.top(); ops.pop();
values.push(compute(val1, val2, op));
}

return values.top();
}

int main() {
string expression;
cout

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论