首页 > 代码库 > hdu 1237 简单计算器
hdu 1237 简单计算器
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237
题目大意:一个简单的计算器,只要判断好运算顺序即可。先加减后乘除~建议一个比较简单的想法,输入一个数字,再输入一个字符,接下去对字符进行判断,分别将数字存入栈中,最后将栈的数进行整理。这样做下去还可以,不过还是wa了几次!
提供测试数据:0 + 1 估计大多数都是忘记考虑这种情况了~
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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。