Problem Link:http://139.129.36.234/problem.php?id=1205
1205: 简单计算器
时间限制: 1 Sec 内存限制: 38 MB提交: 2 解决: 2
[ 提交][ 状态][ 讨论版]
题目描述
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输入
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
输出
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
样例输入
1 + 2
4 + 2 * 5 - 7 / 11
0
样例输出
3.00
13.36
提示
来源
编程思想:直接算术模拟。
AC code:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<map>
#include<math.h>
#include<string.h>
#include<queue>
#include<map>
#include<stack>
#include<vector>
#include<set>
#define LL long long
#define exp 1e-9
#define MAXN 1000010
using namespace std;
double data[222];
double num;
char op,c;
int main()
{
// freopen("D:\\in.txt","r",stdin);
int i,len;
double res;
while(scanf("%lf",&num)!=EOF && num)
{
len=0;
data[len++]=num;
c=getchar();
if(c=='\n')
{
printf("%.2lf\n",num);
}
else
{
while(1)
{
scanf("%c %lf",&op,&num);
switch(op)
{
case '+':data[len++]=num;break;
case '-':data[len++]=-num;break;
case '*':data[len-1]*=num;break;
case '/':data[len-1]/=num;break;
}
c=getchar();
if(c=='\n')
break;
}
res=0;
for(i=0;i<len;i++)
{
res+=data[i];
}
printf("%.2lf\n",res);
}
}
return 0;
}