表达式求值
来源:互联网 发布:汽车销售软件有哪些 编辑:程序博客网 时间:2024/06/05 04:50
波兰表达式(用栈)
#include<iostream>#include<cstdio>#include<cstring>//后缀表达式 using namespace std;int main(){ long long int num[20]; char s[20]; int pos; while(cin>>s){ int result=0; if(isdigit(s[0])){ result=s[0]-'0'; int len=strlen(s); if(len>1) for(int i=1;i<len;i++){ result=result*10+s[i]-'0'; } //result=atof(s); num[pos++]=result; } if(s[0]=='+') {num[pos-2]=num[pos-1]+num[pos-2];pos--;} if(s[0]=='-') {if(s[1]=='\0'){num[pos-2]=num[pos-1]-num[pos-2];pos--;}int temp=0;int leng=strlen(s);for(int i=1;i<leng;i++)temp=temp*10+s[i];num[pos++]=-temp;} if(s[0]=='*') {num[pos-2]=num[pos-1]*num[pos-2];pos--;} if(s[0]=='/') {num[pos-2]=num[pos-1]/num[pos-2];pos--;} } printf("%I64d\n",num[0]); return 0;}
逆波兰表达式(递归)
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;double exp(){ char s[10];//浮点数的输入 cin>>s; switch(s[0]){ case '+': return exp()+exp(); case '-': if(s[1]=='\0')return exp()-exp();else return atof(s); case '*': return exp()*exp(); case '/': return exp()/exp(); default: return atof(s);//将字符串 转换为 双精度浮点数 break; }}int main(){ printf("%lf\n",exp()); return 0;}
中缀表达式(递归)
#include<iostream>#include<cstdio>using namespace std;char s[1000];int pos=0;int expression();int term();int factor();int main(){ cin>>s; printf("%d",expression()); return 0;}int expression(){ int result=term(); if(s[pos]=='+'){ pos++; result+=term(); } if(s[pos]=='-'){ pos++; result-=term(); } return result;}int term(){ int result=factor(); if(s[pos]=='*'){ pos++; result*=factor(); } if(s[pos]=='/'){ pos++; result/=factor(); } return result;}int factor(){ int result=0; if(s[pos]=='('){ pos++; result+=expression(); pos++; } while(isdigit(s[pos])){ result=result*10+s[pos]-'0'; pos++; } return result;}
0 0
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 单例模式 & 私有析构函数 & new重载
- 【Unity&NGUI】启动工程文件遇到的错误
- 替换mysql 字段中的换行符
- JAVA学习笔记(三)——数组的使用
- Linux软件开发工程师
- 表达式求值
- 蓝桥杯--DP-完全背包
- JMeter 中_time 函数的使用(时间戳、当前时间)
- C++之模板
- leetcode349. Intersection of Two Arrays
- 代码注释:机器学习实战第8章 预测数值型数据:回归
- 500Illegal_PORT_command的问题_主被动模式
- 2017去哪网春招编程题详解
- C语言陷阱学习总结