前缀式计算
来源:互联网 发布:长江证券软件下载 编辑:程序博客网 时间:2024/04/28 22:01
题目链接:nyist 128http://acm.nyist.net/JudgeOnline/problem.php?pid=128
知识点:
stringstream可以把string转换成double,int,long long等(方法2、3)
unget()可以把读出的字符放回字符串流中(方法2)
atof在stdlib.h中的把str字符串转换成double(方法3、4)
atoi在stdlib.h中的把str字符串转换成int;(方法3、4)
代码1:
#include<iostream>#include<string>#include<stdio.h>using namespace std;int pos;string str;double fun(){++pos;if(str[pos]==' ')++pos;if(str[pos]>='0'&&str[pos]<='9'){string s;while(pos!=str.size()&&str[pos]!=' ')s+=str[pos++];double tp;sscanf(s.c_str(),"%lf",&tp);return tp;}if(str[pos]=='+')return fun()+fun();if(str[pos]=='-')return fun()-fun();if(str[pos]=='*')return fun()*fun();if(str[pos]=='/')return fun()/fun();}int main(){while(getline(cin,str)){pos=-1;printf("%.2lf\n",fun());}}
代码2:
#include<iostream>#include<string>#include<stdio.h>#include<sstream>#include<stdlib.h>using namespace std;stringstream ss;//字符串流double fun(){char ch;double tp;ss>>ch;if(ch=='+')return fun()+fun();if(ch=='-')return fun()-fun();if(ch=='*')return fun()*fun();if(ch=='/')return fun()/fun();ss.unget();//把读出的ch字符放回ss字符串流中ss>>tp; //从字符串流中读出double型数return tp;}int main(){string str;while(getline(cin,str)){ss.clear();ss<<str;printf("%.2lf\n",fun());}}
代码3:
#include<iostream>#include<string>#include<stdio.h>#include<sstream>#include<stdlib.h>using namespace std;stringstream ss;//字符串流double fun(){string str;ss>>str;if(str[0]=='+')return fun()+fun();if(str[0]=='-')return fun()-fun();if(str[0]=='*')return fun()*fun();if(str[0]=='/')return fun()/fun();return atof(str.c_str());//atof在stdlib.h中 把str字符串转换成double;//atoi在stdlib.h中 把str字符串转换成int;}int main(){string str;while(getline(cin,str)){ss.clear();ss<<str;printf("%.2lf\n",fun());}}
代码4:
#include<stdio.h>#include<stdlib.h>char str[20];double fun(){if(scanf("%s",str)==EOF)return 1<<30;if(str[0]=='+')return fun()+fun();if(str[0]=='-')return fun()-fun();if(str[0]=='*')return fun()*fun();if(str[0]=='/')return fun()/fun();return atof(str);//atof在stdlib.h中的把str字符串转换成double; //atoi在stdlib.h中的把str字符串转换成int;}int main(){while(1){double tp=fun();if(tp<1<<30)printf("%.2lf\n",tp);elsebreak;}}
- 前缀式计算
- NYOJ128 前缀式计算
- 前缀式计算
- 【前缀式计算 128】
- 前缀式计算
- NYOJ--前缀式计算
- 前缀式计算
- 前缀式计算
- 前缀式计算
- 前缀式计算
- nyoj-----前缀式计算
- 前缀式计算
- NY128 前缀式计算
- 前缀式计算
- 前缀式计算
- NYOJ_128 前缀式计算
- 前缀式计算
- NYOJ_128 前缀式计算
- POJ 2430 Lazy Cows
- Java读取文本文件内容
- 基本功练习_2_19输入两个数求之间的能被3和5整除的数
- Bent Normal (环境法线?)
- HR开发总结·1
- 前缀式计算
- HRESULT的秘密
- VB+浮点运算的的简单算法
- facebook实时hadoop
- FFF Warm Up Contest 1 - Amritapuri 2011 [iSea]
- facebook realtime hadoop
- Android 开发指南 翻译11 Application Resources -- String Resources
- 九度oj1033
- Hanio 问题