#include<iostream>
#include<stack>
#include<string>
#include<stdlib.h>
using namespace std;
/*
#include <iomanip>
cout<<setiosflags(ios::fixed)<<setprecision(2)<<num<<endl;
*/
int main() {
string input = "";
while (cin >> input) {
if (input == "0") break;
stack<char> operation;
stack<double> operand;
for (int i = 0; i < input.length(); i++){
if (input[i] == '+'||input[i] == '-') {
operation.push(input[i]);
}
else if (input[i] == '*'||input[i] == '/') {
double a = operand.top();
char h = input[i];
operand.pop();
i++;
string temp ="";
temp += input[i];
while(input[i+1] != '+'&&input[i+1] != '-'&&input[i+1] != '*'&&input[i+1] != '/') {
i++;
temp +=input[i];
}
double b = double(atoi(temp.c_str()));
double result;
if (h == '*') {
result = b*a;
}
else if (h == '/') {
result = double(a*1.0/b);
}
operand.push(result);
} else {
string temp ="";
temp += input[i];
while(input[i+1] != '+'&&input[i+1] != '-'&&input[i+1] != '*'&&input[i+1] != '/') {
i++;
temp +=input[i];
}
operand.push(double(atoi(temp.c_str())));
}
}
while (!operation.empty()) {
char h = operation.top();
operation.pop();
double a = operand.top();
operand.pop();
double b = operand.top();
operand.pop();
double result;
if (h == '+') {
result = a+b;
}
else if (h == '-') {
result = b-a;
}
operand.push(result);
}
cout << operand.top() << endl;
operand.pop();
}
return 0;
}
简单的表达式求值
最新推荐文章于 2021-06-13 08:16:00 发布