首页 > 其他 > 详细

F - 简单计算器

时间:2016-08-16 21:56:06      阅读:236      评论:0      收藏:0      [点我收藏+]

Description

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

Input

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

Output

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

Sample Input

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

Sample Output

3.00
13.36
 
分析:可以用栈解决,也可以用数组解决,栈还不是很会,所以我是用数组做的,以后再将栈的做法补上。
 
思路:我的思路就是首先考虑乘除,就是将两个要进行乘除运算的数计算出来看作是一个数。实际操作就是你将每一次加法和减法前数的总和保存在数组中,将输入的数赋给另一个变量,留待乘除调用。最后重新定义一个变量记录最后的结果, 将所有值依次相加。
 
技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 double sum;
 6 double ans[211];
 7 char c;
 8 int main()
 9 {
10     int t,n;
11     while(scanf("%d",&t)!=EOF)
12     {
13         n=0;
14         sum=t*1.0;//又是初始值定义错误
15         if(t==0&&(c=getchar())==\n)//这里要注意一下
16             return 0;
17         while((c=getchar())!=\n)
18         {
19             if(c==*)
20             {
21                 scanf("%d",&t);
22                 sum*=t*1.0;
23             }
24             if(c==/)
25             {
26                 scanf("%d",&t);
27                 sum/=t*1.0;
28             }
29             if(c==+)
30             {
31                 ans[n++]=sum;
32                 scanf("%d",&t);
33                 sum=t*1.0;//将输入的数保存,以便用于乘除运算
34             }
35             if(c==-)
36             {
37                 ans[n++]=sum;
38                 scanf("%d",&t);
39                 sum=-t*1.0;
40             }
41         }
42         ans[n++]=sum;
43         double cnt=0;
44         for(int i=0; i<n; i++)
45             cnt+=ans[i];
46         printf("%.2lf\n",cnt);
47     }
48     return 0;
49 }
View Code

 

 
 
 
 
 
 
 

F - 简单计算器

原文:http://www.cnblogs.com/lbyj/p/5676072.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!