字符串四则运算
来源:互联网 发布:网络公开课 麻省 网 编辑:程序博客网 时间:2024/06/08 11:02
#include<iostream>//中缀表达式求值
#include<stack>
using namespace std;
int precede(char t1,char t2) //shuru//判断优先级
{
int t=0;
switch(t2)
{
case '+':
case '-':
if(t1=='('||t1=='#') t=-1;
else t=1;
break;
case '*':
case '/':
if(t1=='*'||t1=='/'||t1==')')
t=1;
else t=-1;
break;
case '#':
if(t1=='#') t=0;
else t=1;
break;
case '(':
t=-1;
break;
case ')':
if(t1=='(') t=0;
else t=1;
break;
}
return t;
}
int operate(int m,char cp,int n)//就算
{
switch(cp)
{
case '+':
return m+n;
case '-':
return m-n;
case '*':
return m*n;
case '/':
return m/n;
}
return 0;
}
int main()
{
int m,n;
char cp;
stack<int> open;
stack<char> optr;
optr.push('#');//初始化
char input[]="3*(4+2)/2-5#";
int i=0;
while(input[i]!='\0')
{
if(input[i]>='0'&&input[i]<='9')
open.push(input[i]-'0');
else
switch(precede(optr.top(),input[i]))
{
case 1:
while(precede(optr.top(),input[i])==1)
{
m=open.top();
open.pop();
n=open.top();
open.pop();
cp=optr.top();
optr.pop();
open.push(operate(n,cp,m));
}
if(precede(optr.top(),input[i])==-1)
optr.push(input[i]);
else optr.pop();
break;
case -1:
optr.push(input[i]);
break;
case 0:
optr.pop();
break;
}
i++;
}
cout<<open.top()<<endl;
return 0;
}
#include<stack>
using namespace std;
int precede(char t1,char t2) //shuru//判断优先级
{
int t=0;
switch(t2)
{
case '+':
case '-':
if(t1=='('||t1=='#') t=-1;
else t=1;
break;
case '*':
case '/':
if(t1=='*'||t1=='/'||t1==')')
t=1;
else t=-1;
break;
case '#':
if(t1=='#') t=0;
else t=1;
break;
case '(':
t=-1;
break;
case ')':
if(t1=='(') t=0;
else t=1;
break;
}
return t;
}
int operate(int m,char cp,int n)//就算
{
switch(cp)
{
case '+':
return m+n;
case '-':
return m-n;
case '*':
return m*n;
case '/':
return m/n;
}
return 0;
}
int main()
{
int m,n;
char cp;
stack<int> open;
stack<char> optr;
optr.push('#');//初始化
char input[]="3*(4+2)/2-5#";
int i=0;
while(input[i]!='\0')
{
if(input[i]>='0'&&input[i]<='9')
open.push(input[i]-'0');
else
switch(precede(optr.top(),input[i]))
{
case 1:
while(precede(optr.top(),input[i])==1)
{
m=open.top();
open.pop();
n=open.top();
open.pop();
cp=optr.top();
optr.pop();
open.push(operate(n,cp,m));
}
if(precede(optr.top(),input[i])==-1)
optr.push(input[i]);
else optr.pop();
break;
case -1:
optr.push(input[i]);
break;
case 0:
optr.pop();
break;
}
i++;
}
cout<<open.top()<<endl;
return 0;
}
1 0
- 字符串四则运算
- 字符串四则运算
- 字符串四则运算
- 字符串四则运算
- 字符串四则运算(计算器)
- 字符串实现四则运算
- 简单字符串四则运算
- 字符串的四则运算
- 字符串四则运算求值
- 四则运算 字符串输入
- 字符串的四则运算
- 数字字符串四则运算
- JAVA实现字符串四则运算
- 字符串四则运算表达式的算法
- python对字符串实现四则运算
- JAVA四则运算字符串解释器
- 四则运算
- 四则运算
- 2014百度之星资格赛第四题
- 关于C#调用VC编的DLL后报“System.AccessViolationException:尝试读取或写入受保护的内存
- 动态规划-uva-674
- 黑马程序员-java基础加强(二)
- SQL中的NULL值
- 字符串四则运算
- C语言/C++中如何产生随机数 详细出处参考:http://www.jb51.net/article/42065.htm
- Java1.5新特性之泛型
- windows下mingw的复制粘贴
- SG-分石子游戏
- 菜鸟轻松学习网页文字滚动特效
- 第十七讲 DataList数据显示控件(一)
- hdu4333Revolving Digits
- UVA 111 History Grading