在现代编程实践中,C++以其高效性、可扩展性和面向对象的特性被广泛应用。本文旨在介绍如何使用C++编写一个功能更加丰富的计算器程序,该程序不仅能够执行基本的数学运算,还能处理更复杂的表达式,并提供用户友好的交互界面。
多功能计算器将包含以下特性:
为了实现上述功能,我们需要编写一个能够解析和计算数学表达式的程序。下面是一个简化版的C++多功能计算器程序:
#include <iostream> #include <stack> #include <cctype> #include <sstream> 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<double> values; stack<char> 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 << "请输入一个数学表达式: "; getline(cin, expression); try { double result = evaluateExpression(expression); cout << "结果是: " << result << endl; } catch (const invalid_argument& e) { cout << "错误: " << e.what() << endl; } return 0; }
用户可以在控制台中输入一个数学表达式,例如 "3 + 4 * (2 - 1) / 5",然后程序会计算表达式的结果并显示。如果用户输入了一个无效的表达式,程序会显示一个错误信息。
这个C++多功能计算器程序展示了如何使用栈来处理复杂的数学表达式,并提供了用户友好的交互界面。通过扩展这个程序,可以添加更多的功能,比如支持更多的数学函数、提供图形用户界面等。
本文链接:http://www.28at.com/showinfo-26-70430-0.htmlC++实现多功能计算器
声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。