hdoj 1237 简单计算器
2016-03-06 17:27
253 查看
简单计算器
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16424 Accepted Submission(s): 5638
Problem Description
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 2
4 + 2 * 5 - 7 / 11
0
Sample Output
3.00
13.36.
代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; int main() { double Temp; double num[1010]; while(scanf("%lf",&Temp)!=EOF) { int t=0; char ch; scanf("%c",&ch); if(Temp==0&&ch=='\n') break; num[t]=Temp; while(scanf("%lf",&Temp)!=EOF) { if(ch=='+') num[++t]=Temp; else if(ch=='-') num[++t]=-Temp; else if(ch=='*') num[t]*=Temp; else if(ch=='/') num[t]/=Temp; ch=getchar(); if(ch=='\n') break; } double sum=0; for(int i= 0;i<=t;i++) { sum+=num[i]; } printf("%.2lf\n",sum); } return 0; }
栈:
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<stack> using namespace std; int main() { double Temp,temp; stack< double >num; while(scanf("%lf",&Temp)!=EOF) { char kongge ,ch; kongge=getchar(); if(Temp==0&&kongge=='\n') break; num.push(Temp); scanf("%c",&ch); while(scanf("%lf",&Temp)!=EOF) { if(ch=='+') num.push(Temp); else if(ch=='-') num.push(-Temp); else if(ch=='*') { temp=num.top(); num.pop() ; num.push(temp*Temp); } else if(ch=='/') { temp=num.top(); num.pop(); num.push(temp/Temp); } kongge=getchar(); if(kongge=='\n') break; scanf("%c",&ch); } double sum=0; while(!num.empty()) { sum+=num.top(); num.pop(); } printf("%.2lf\n",sum); } return 0; }
相关文章推荐
- C++基于栈实现铁轨问题
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- js实现简单计算器
- java数据结构之java实现栈
- 浅析栈区和堆区内存分配的区别
- 用Java代码实现栈数据结构的基本方法归纳
- 用PHP解决的一个栈的面试题
- 浅谈C#中堆和栈的区别(附上图解)
- JavaScript数据结构与算法之栈详解
- 使用JavaScript 编写简单计算器
- C语言之栈和堆(Stack && Heap)的优缺点及其使用区别
- Python实现栈的方法
- JavaScript数据结构与算法之栈与队列
- JavaScipt中栈的实现方法
- Java中堆和栈的区别详解
- 详解Java的堆内存与栈内存的存储机制