标签:namespace printf 递归 gets 方法 关系 str default blog
* + 11.0 12.0 + 24.0 35.0
1357.000000
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 using namespace std; 5 void px(double ans[],int t,int oo) 6 { 7 for(int l=t;l<oo;l++) 8 { 9 double p=ans[l+1]; 10 ans[l]=p; 11 ans[l+1]=0; 12 } 13 } 14 int main() 15 { 16 char s[110],k[110]; 17 gets(s); 18 double ans[110]; 19 int len=strlen(s),i=0,n=0,lens=0,lenans=0; 20 while(i<len) 21 { 22 if(s[i]>=‘0‘&&s[i]<=‘9‘||s[i]==‘.‘) 23 { 24 while(s[i]>=‘0‘&&s[i]<=‘9‘||s[i]==‘.‘) 25 { 26 k[n]=s[i]; 27 i++;n++; 28 } 29 ans[lenans]=atof(k); 30 lenans++; 31 memset(k,0,sizeof(k)); 32 n=0; 33 } 34 else i++; 35 36 } 37 for(int j=len-1;j>=0;j--) 38 { 39 if(s[j]==‘ ‘&&s[j+1]!=‘+‘&&s[j+1]!=‘-‘&&s[j+1]!=‘/‘&&s[j+1]!=‘*‘) 40 { 41 lens++; 42 } 43 else 44 { 45 if(s[j]==‘+‘||s[j]==‘-‘||s[j]==‘/‘||s[j]==‘*‘) 46 { 47 switch(s[j]) 48 { 49 case ‘+‘:ans[lenans-lens]+=ans[lenans-lens+1];px(ans,lenans-lens+1,lenans-1);break; 50 case ‘-‘:ans[lenans-lens]-=ans[lenans-lens+1];px(ans,lenans-lens+1,lenans-1);break; 51 case ‘*‘:ans[lenans-lens]*=ans[lenans-lens+1];px(ans,lenans-lens+1,lenans-1);break; 52 case ‘/‘:ans[lenans-lens]/=ans[lenans-lens+1];px(ans,lenans-lens+1,lenans-1);break; 53 } 54 } 55 } 56 } 57 printf("%lf",ans[0]); 58 return 0; 59 }
(递归)
1 #include<cstdio> 2 #include<cstdlib> 3 using namespace std; 4 double js() 5 { 6 char t[20]; 7 scanf("%s",t); 8 switch(t[0]) 9 { 10 case ‘+‘:return js()+js(); 11 case ‘-‘:return js()-js(); 12 case ‘*‘:return js()*js(); 13 case ‘/‘:return js()/js(); 14 default :return atof(t); 15 } 16 } 17 int main() 18 { 19 printf("%lf",js()); 20 return 0; 21 }
标签:namespace printf 递归 gets 方法 关系 str default blog
原文地址:http://www.cnblogs.com/zby-ccsygz/p/6193759.html