在現(xiàn)代編程實(shí)踐中,C++以其高效性、可擴(kuò)展性和面向?qū)ο蟮奶匦员粡V泛應(yīng)用。本文旨在介紹如何使用C++編寫一個功能更加豐富的計(jì)算器程序,該程序不僅能夠執(zhí)行基本的數(shù)學(xué)運(yùn)算,還能處理更復(fù)雜的表達(dá)式,并提供用戶友好的交互界面。
多功能計(jì)算器將包含以下特性:
為了實(shí)現(xiàn)上述功能,我們需要編寫一個能夠解析和計(jì)算數(shù)學(xué)表達(dá)式的程序。下面是一個簡化版的C++多功能計(jì)算器程序:
#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("除數(shù)不能為0"); default: throw invalid_argument("無效的運(yùn)算符"); } } 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 << "請輸入一個數(shù)學(xué)表達(dá)式: "; getline(cin, expression); try { double result = evaluateExpression(expression); cout << "結(jié)果是: " << result << endl; } catch (const invalid_argument& e) { cout << "錯誤: " << e.what() << endl; } return 0; }
用戶可以在控制臺中輸入一個數(shù)學(xué)表達(dá)式,例如 "3 + 4 * (2 - 1) / 5",然后程序會計(jì)算表達(dá)式的結(jié)果并顯示。如果用戶輸入了一個無效的表達(dá)式,程序會顯示一個錯誤信息。
這個C++多功能計(jì)算器程序展示了如何使用棧來處理復(fù)雜的數(shù)學(xué)表達(dá)式,并提供了用戶友好的交互界面。通過擴(kuò)展這個程序,可以添加更多的功能,比如支持更多的數(shù)學(xué)函數(shù)、提供圖形用戶界面等。
本文鏈接:http://www.www897cc.com/showinfo-26-70430-0.htmlC++實(shí)現(xiàn)多功能計(jì)算器
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 簡述 packages.json 中 41 個常用的配置字段,了解一下還挺有用
下一篇: SpringBoot3虛擬線程 & 反應(yīng)式(WebFlux) & 傳統(tǒng)Tomcat線程池性能對比