首页 > 代码库 > 题目1019:简单计算器(栈的使用)
题目1019:简单计算器(栈的使用)
题目链接:http://ac.jobdu.com/problem.php?pid=1019
题目具体分析见:https://github.com/zpfbuaa/JobduInCPlusPlus
参考代码:
//// 1019 简单计算器.cpp// oj//// Created by PengFei_Zheng on 04/04/2017.// Copyright © 2017 PengFei_Zheng. All rights reserved.// #include <stdio.h>#include <cmath>#include <algorithm>#include <iostream>#include <string.h>#include <stack> #define run ;//#define debug ; using namespace std;int num1;double temp; stack<double> myStack; int main(){ #ifdef debug while(scanf("%d ",&num1)&&num1!=0){ cout<<num1<<" "; char a,b; int num; while(scanf("%c %d%c",&a,&num,&b)!=EOF){ if(b!=‘ ‘){ cout<<a<<" "<<num<<endl; break; } else{ cout<<a<<" "<<num<<b; } } }#endif #ifdef run char space0; while(scanf("%d%c",&num1,&space0)&&num1!=0&&space0==‘ ‘){//ignore the space and using space0!=‘ ‘ and num1==0 the jump out of loop while(!myStack.empty()){ myStack.pop(); } myStack.push(num1);// cout<<"myStack push: "<<num1<<endl; char op,space1,space2; int num2; while(scanf("%c%c%d%c",&op,&space1,&num2,&space2)!=EOF){//ignore the space and using space2 to jump out of this calculation if(op==‘+‘){// cout<<"myStack push: "<<num2<<endl; myStack.push(num2); } else if(op==‘-‘){// cout<<"myStack push: "<<0-num2<<endl; myStack.push(0-num2); } else if(op==‘*‘){ temp = myStack.top(); myStack.pop();// cout<<"myStack push: "<<temp*num2<<endl; myStack.push(temp*num2); } else if(op==‘/‘){ temp = myStack.top(); myStack.pop();// cout<<"myStack push: "<<temp/num2<<endl; myStack.push(temp/num2); } if(space2!=‘ ‘)//jump out of loop break; } while(!myStack.empty()){ if(myStack.size()==1){ printf("%.2lf\n",myStack.top()); break; } double x = myStack.top(); myStack.pop(); double y = myStack.top(); myStack.pop(); myStack.push(x+y); } }#endif }/************************************************************** Problem: 1019 User: zpfbuaa Language: C++ Result: Accepted Time:0 ms Memory:1524 kb****************************************************************/
题目1019:简单计算器(栈的使用)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。