码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1237 简单计算器

时间:2014-07-31 16:09:06      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   数据   art   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237

题目大意:一个简单的计算器,只要判断好运算顺序即可。先加减后乘除~建议一个比较简单的想法,输入一个数字,再输入一个字符,接下去对字符进行判断,分别将数字存入栈中,最后将栈的数进行整理。这样做下去还可以,不过还是wa了几次!

提供测试数据:0 + 1 估计大多数都是忘记考虑这种情况了~

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <stack>
 4 #include <cstring>
 5 using namespace std;
 6 int main ()
 7 {
 8     stack<double>s;
 9     int n;
10     double m;
11     char ch,str;
12     while (scanf("%d%c",&n,&ch)!=EOF)
13     {
14         if (n==0&&ch==\n)
15         break;
16         s.push(n);
17         scanf("%c %d",&ch,&n);
18         switch (ch)
19             {
20             case +:
21             {
22                 s.push((double)n);
23                 break;
24             }
25             case -:
26             {
27                 s.push(-(double)n);
28                 break;
29             }
30             case *:
31             {
32                 m=s.top();
33                 s.pop();
34                 m=m*(double)n;
35                 s.push(m);
36                 break;
37             }
38             case /:
39             {
40                 m=s.top();
41                 s.pop();
42                 m=m/(double)n;
43                 s.push(m);
44                 break;
45             }
46             }
47         while (scanf("%c",&ch)!=EOF)
48         {
49             if (ch==\n)
50                 break;
51             scanf("%c%d",&str,&n);
52             switch (str)
53             {
54             case +:
55             {
56                 s.push((double)n);
57                 break;
58             }
59             case -:
60             {
61                 s.push(-(double)n);
62                 break;
63             }
64             case *:
65             {
66                 m=s.top();
67                 s.pop();
68                 m=m*(double)n;
69                 s.push(m);
70                 break;
71             }
72             case /:
73             {
74                 m=s.top();
75                 s.pop();
76                 m=m/(double)n;
77                 s.push(m);
78                 break;
79             }
80             }
81 
82         }
83         double sum=0;
84         while (!s.empty())
85         {
86             //cout<<s.top();
87             sum+=s.top();
88             s.pop();
89         }
90         printf ("%.2lf\n",sum);
91     }
92 }
View Code

 

hdu 1237 简单计算器,布布扣,bubuko.com

hdu 1237 简单计算器

标签:style   blog   http   color   os   io   数据   art   

原文地址:http://www.cnblogs.com/qq-star/p/3880596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!