表达式求值
来源:互联网 发布:国产纪录片 知乎 编辑:程序博客网 时间:2024/06/04 19:59
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
int factor_value();
int term_value();
int expression_value();
int main()
{
cout<<expression_value()<<endl;
return 0;
}
int expression_value()
{
int result=term_value(); //求第一项的值
bool more=true;
while(more)
{
char op=cin.peek(); // 看一个字符,不取走
if(op=='+'||op=='-')
{
cin.get(); //从输入中取走一个字符
int value=term_value();
if(op=='+')
result+=value;
else
result-=value;
}
else
more=false;
}
return result;
}
int term_value()
{
int result=factor_value();
while(true)
{
char op=cin.peek();
if(op=='*'||op=='/')
{
cin.get();
int value=factor_value();
if(op=='*')
result*=value;
else
result/=value;
}
else
break;
}
return result;
}
int factor_value()
{
int result=0;
char c=cin.peek();
if(c=='(')
{
cin.get();
result=expression_value();
cin.get();
}
else
{
while(isdigit(c))
{
result=10*result+c-'0';
cin.get();
c=cin.peek();
}
}
return result;
}
}
#include<cstring>
#include<cstdlib>
using namespace std;
int factor_value();
int term_value();
int expression_value();
int main()
{
cout<<expression_value()<<endl;
return 0;
}
int expression_value()
{
int result=term_value(); //求第一项的值
bool more=true;
while(more)
{
char op=cin.peek(); // 看一个字符,不取走
if(op=='+'||op=='-')
{
cin.get(); //从输入中取走一个字符
int value=term_value();
if(op=='+')
result+=value;
else
result-=value;
}
else
more=false;
}
return result;
}
int term_value()
{
int result=factor_value();
while(true)
{
char op=cin.peek();
if(op=='*'||op=='/')
{
cin.get();
int value=factor_value();
if(op=='*')
result*=value;
else
result/=value;
}
else
break;
}
return result;
}
int factor_value()
{
int result=0;
char c=cin.peek();
if(c=='(')
{
cin.get();
result=expression_value();
cin.get();
}
else
{
while(isdigit(c))
{
result=10*result+c-'0';
cin.get();
c=cin.peek();
}
}
return result;
}
}
0 0
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- [编程题]循环单词
- 坑记:FFmpeg用movie+overlay做图片水印
- Servlet基础
- Spring总结
- GIT能做什么、它和SVN在深层次上究竟有什么不同
- 表达式求值
- HDU5533 Dancing Stars on Me(计算几何)
- 在Ubuntu14.04上快速部署OpenStack
- php pdo连接mysql数据库
- How to merge MPTCP Kernel Source with Android 5.x ?
- JAVA求学之路第十四天
- ZOJ3704 I am Nexus Master!
- 导入或创建Android工程时报错:Errors running builder 'Android resource manager' on project
- 从源码讲解java线程池ThreadPoolExecuter的实现原理