c++编码。课程设计内容二 四则运算达式求解(要求分别用中级和后缀两种方法,并设计求解界面) 1.4+2x(--30)-60÷5 2.115-(15+20) ×2+9÷3 3.(900-16×35)÷34-6 4.600-(30-20)+5x2 5.10+12x(34+46)÷32 6.500÷10-(165+35)x3 7.(53+47)x(86-24)÷20 -150 8.9+(45+38-16)x24÷8 9.26x(304-286)+39+3x5 10. 18x2-900÷(120-20×3)11 972÷18+35x(19-10)-30 12.6×58-(175+89)+(8+4)13.(75+49)÷(75-44)+5×7 14.25x(22+576÷32)-7x60 15.5+(736÷16-27)x8-7 16.11+(564-18x24)÷12 17.48×(32-17)+30-(9-3)18.77÷(13-2)x9-4x14 注:可使用随机数自行设计输入表达式!写出代码
时间: 2023-12-23 18:05:41 浏览: 117
C++ 表达式求解 MFC源代码含注释.txt
好的,以下是一个使用C++实现中缀表达式和后缀表达式求解的示例代码,包括一个简单的控制台界面。代码中使用了字符串流和栈来实现中缀表达式转换和后缀表达式求解。
```c++
#include <iostream>
#include <sstream>
#include <stack>
using namespace std;
// 判断字符是否为运算符
bool isOperator(char c) {
return c == '+' || c == '-' || c == '*' || c == '/';
}
// 获取运算符的优先级
int getPriority(char op) {
if (op == '+' || op == '-') {
return 1;
} else if (op == '*' || op == '/') {
return 2;
}
return 0;
}
// 中缀表达式转后缀表达式
string toPostfix(const string& infix) {
stringstream ss(infix);
stack<char> opStack;
string postfix = "";
string token;
while (ss >> token) {
if (isdigit(token[0])) {
postfix += token + " ";
} else if (isOperator(token[0])) {
while (!opStack.empty() && isOperator(opStack.top()) &&
getPriority(token[0]) <= getPriority(opStack.top())) {
postfix += opStack.top();
postfix += " ";
opStack.pop();
}
opStack.push(token[0]);
} else if (token[0] == '(') {
opStack.push(token[0]);
} else if (token[0] == ')') {
while (!opStack.empty() && opStack.top() != '(') {
postfix += opStack.top();
postfix += " ";
opStack.pop();
}
opStack.pop();
}
}
while (!opStack.empty()) {
postfix += opStack.top();
postfix += " ";
opStack.pop();
}
return postfix;
}
// 计算后缀表达式
double calculate(const string& postfix) {
stringstream ss(postfix);
stack<double> numStack;
string token;
while (ss >> token) {
if (isdigit(token[0])) {
numStack.push(stod(token));
} else if (isOperator(token[0])) {
double num2 = numStack.top();
numStack.pop();
double num1 = numStack.top();
numStack.pop();
switch (token[0]) {
case '+': numStack.push(num1 + num2); break;
case '-': numStack.push(num1 - num2); break;
case '*': numStack.push(num1 * num2); break;
case '/': numStack.push(num1 / num2); break;
}
}
}
return numStack.top();
}
int main() {
string infix;
cout << "请输入中缀表达式:";
getline(cin, infix);
string postfix = toPostfix(infix);
cout << "后缀表达式为:" << postfix << endl;
double result = calculate(postfix);
cout << "计算结果为:" << result << endl;
return 0;
}
```
您可以根据需要修改代码来实现您的课程设计。如果您需要使用图形界面,可以使用C++的图形界面库来实现。
阅读全文