刚花了一个小时左右的时间写了这个程序,用它可以计算任意长度的任意复杂度的四则运算式(当然这是在硬件条件的支持限度内)
#include<iostream>
#include<stack>
using namespace std;
//用来判断读入的一个字符是否是数字
bool isData(char ch)
{
if(ch>47&&ch<58) return true;
return false;
}
//用来判断是否是乘除运算
bool isMulOrDiv(char ch)
{
if(ch == '*' || ch == '/') return true;
return false;
}
//用来判断是否是加减运算
bool isPlusOrMinu(char ch)
{
if(ch == '-' || ch == '+') return true;
return false;
}
//用来做相应的加减乘除运算
float operate(float data,float data2,char ope)
{
switch(ope)
{
case '*':
return data * data2;
case '/':
return data / data2;
case '+':
return data + data2;
case '-':
return data - data2;
default:
return 0;
}
}
//主函数
int main()
{
stack<char> stackOperator; //操作符栈
stack<float> stackData; //操作数栈
char exp[100],ope;
float data,data2; /