HDU——1237简单计算器
来源:互联网 发布:宏程序编程实例自学 编辑:程序博客网 时间:2024/05/21 08:04
HDU——1237简单计算器
分析:模拟题,现将一行的字符读入,当遇见数字就放入数子栈,遇见加减放入字符栈,
遇见乘除,将最顶端的数字串和下一个数字进行计算再放入数字栈 _最后将栈里面的元素倒置,进行加减运算,emmm估计队列也可以用的
用stack和对字符串的处理
给的数据也好,每个数字和字符中间都是用空格分开,好判断emmm~
#include<iostream>#include<cstdio>#include<stack>#include<map>#include<string>#include<cstring>using namespace std;int main(){ char s[220]; while(gets(s),strcmp(s,"0")) /*为0结束 ,gets函数可以无限读取以回车为结束 同时strcmp比较两个字符串 若str1==str2,则返回零; 若str1<str2,则返回负数; 若str1>str2, 则返回正数。*/ { int len=strlen(s); stack<char>sym; stack<double>num; for(int i=0;i<len;i++) { if(s[i]==' ') continue; else if(s[i]=='*'||s[i]=='/') { double x=num.top(); num.pop(); double y=0; int j; for(j=i+2;j<len;j++)//此处注意要跳过几个非数字符号 { if(s[j]!=' ') y=y*10+s[j]-'0'; else break; } if(s[i]=='*') num.push(x*y); else num.push(x/y); i=j; }//对于乘除直接计算 else if(s[i]=='+'||s[i]=='-') sym.push(s[i]); else { double ans=0; int j; for(j=i;j<len;j++) { if(s[j]!=' ') ans=ans*10+s[j]-'0'; else break; } i=j; num.push(ans); } } //倒序 stack<char>dsym; stack<double>dnum; while(!sym.empty()) { char e=sym.top(); //cout<<e<<endl; dsym.push(e); sym.pop(); } while(!num.empty()) { double e=num.top(); //cout<<e<<endl; dnum.push(e); num.pop(); } //进行加减计算 while(!dnum.empty()&&!dsym.empty()) { double x=dnum.top(); dnum.pop(); double y=dnum.top(); dnum.pop(); char e=dsym.top(); dsym.pop(); if(e=='+') dnum.push(x+y); else dnum.push(x-y); } printf("%.2lf\n",dnum.top()); } return 0;}
阅读全文
0 0
- HDU——1237简单计算器
- HDU 1237 简单计算器
- HDU 1237 简单计算器
- hdu 1237 简单计算器
- HDU 1237 简单计算器
- hdu 1237 简单计算器
- hdu 1237 简单计算器
- hdu - 1237 - 简单计算器
- hdu 1237 简单计算器
- HDU-简单计算器-1237
- hdu 1237简单计算器
- hdu 1237 简单计算器
- hdu 1237 简单计算器
- HDU 1237 简单计算器
- HDU 1237简单计算器
- hdu 1237 简单计算器
- HDU 1237 简单计算器
- HDU-1237-简单计算器
- Java编程思想对象底层思想
- C#查看变量的内存地址
- 无法访问github网页
- Linux基础
- Spring Boot 集成RabbitMQ
- HDU——1237简单计算器
- gl.h库函数glBlendFunc()使用说明
- 文档总结8-linux系统服务的控制
- mysql给root开启远程访问权限,修改root密码
- java中的变量(成员变量、本地变量、类变量)
- 微信公众号开发(零)初期准备工作
- 运算符优先级
- eclipse + anconda + pydev机器学习环境配置
- mysql+mmm+proxy实现mysql读写分离及HA