首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hdu 1237 简略计算器

2012-10-11 
hdu 1237 简单计算器简单计算器Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K

hdu 1237 简单计算器

简单计算器

Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7093????Accepted Submission(s): 2283

#include <iostream>#include <stdio.h>#include <memory.h>#include <cstring>#include <string>#include <stack>using namespace std;double a[505];char ch[505];int main(){ int i, len; double ch1, ch2, temp, tt; char cc, op, opt; bool tar; while(scanf("%lf", &a[0])) { tar = false; i = 1; while(1) { cc = getchar(); if(cc == ' ') continue; if(cc == '\n') break; tar = true; ch[i] = cc; scanf("%lf", &a[i]); i++; } if(tar == false) { if(a[0] == 0.0) return 0; printf("%.2lf\n", a[0]); continue; } len = i; stack<double> st; stack<char> sc; st.push(a[0]); sc.push(ch[1]); st.push(a[1]); i = 2; for(i = 2; ; i++) { if(i >= len && st.size() <=2) break; ch2 = st.top(); op = sc.top(); if(op == '*') { st.pop(); sc.pop(); ch1 = st.top(); st.pop(); temp = ch1 * ch2; st.push(temp); if(i < len) { sc.push(ch[i]); st.push(a[i]); } } else if(op == '/') { st.pop(); sc.pop(); ch1 = st.top(); st.pop(); temp = ch1 / ch2; st.push(temp); if(i < len) { sc.push(ch[i]); st.push(a[i]); } } else if(op == '+' && st.size() >= 3) { tt = ch2; st.pop(); ch2 = st.top(); st.pop(); opt = op; sc.pop(); op = sc.top(); sc.pop(); ch1 = st.top(); st.pop(); if(op == '+') temp = ch1 + ch2; if(op == '-') temp = ch1 - ch2; st.push(temp); sc.push(opt); st.push(tt); if(i < len) { sc.push(ch[i]); st.push(a[i]); } //printf("---%.0lf %c %.0lf---\n", temp, opt, tt); } else if(op == '-' && st.size() >= 3) { tt = ch2; st.pop(); ch2 = st.top(); st.pop(); opt = op; sc.pop(); op = sc.top(); sc.pop(); ch1 = st.top(); st.pop(); if(op == '+') temp = ch1 + ch2; if(op == '-') temp = ch1 - ch2; st.push(temp); sc.push(opt); st.push(tt); if(i < len) { sc.push(ch[i]); st.push(a[i]); } //printf("---%.0lf %c %.0lf---\n", temp, opt, tt); } else { st.push(a[i]); sc.push(ch[i]); } //printf("%d: %.1lf %.1lf %.1lf\n", i, ch1, ch2, temp); } ch2 = st.top(); st.pop(); op = sc.top(); sc.pop(); ch1 = st.top(); st.pop(); //printf("%.0lf %c %.0lf\n", ch1, op, ch2); if(op == '+') temp = ch1 + ch2; if(op == '-') temp = ch1 - ch2; if(op == '*') temp = ch1 * ch2; if(op == '/') temp = ch1 / ch2; //printf("result = %.2lf\n", temp); printf("%.2lf\n", temp); memset(a, 0, sizeof(a)); memset(ch, 0, sizeof(ch)); } return 0;}

?

热点排行