(ZJU-2006复试)-HDOJ-1237-简单计算器

 

 

简单计算器

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3765    Accepted Submission(s): 1231

Problem Description
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
 

 

Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
 

 

Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
 

 

Sample Input
1 + 2
4 + 2 * 5 - 7 / 11
0
 

 

Sample Output
3.00
13.36
 本着平时抠门的精神,我不停的WA,最后把float改成double就过了。。。看来男人就得对自己狠一点,以后什么类型最长老子就用什么类型

 

 

#include #include #include #include using namespace std; double num[200]; char op[200]; char s[200]; int main() { while(gets(s)&&strcmp(s, "0")) { int nlen=0,olen=0; for(int i=0;i<200;++i)num[i]=0.0f; for(int i=0;i=0;--j,++k) num[nlen]+=number[j]*pow(10.0f, k*1.0f); nlen++; ++i; if(i>=strlen(s))break; op[olen++]=s[i]; i+=2; } int pre=0; for(int i=0;i=pre;--j) num[j]=k; } else if(op[i]=='/') { double k=num[i]/num[i+1]; for(int j=i+1;j>=pre;--j) num[j]=k; } else pre=i+1; } double sum=num[0]; for(int i=0;i

 

你可能感兴趣的:(数学,算法)