pat 乙级 1024. 科学计数法 (20)

来源:互联网 发布:村上春树作品推荐知乎 编辑:程序博客网 时间:2024/05/16 12:55

一点一点的判断


判断 E 后面是+  还是- ,然后 判断 指数的大小 与E前面数字部分的长度大小 

最后判断 第一位是+  还是-  



代码:

#include <iostream>#include<cstring>using namespace std;char b1[10000],b2[10000];int main(){string s1;cin>>s1;   //+1.23400E-03int len=s1.find("E");string a1=s1.substr(0,len);string a2=s1.substr(len+1,s1.length()-1);for (int i=0;i<a1.length() ;i++ ){b1[i]=a1.at(i);  // +1.23400}for (int j=0;j<a2.length() ;j++ ){b2[j]=a2.at(j);  // -03}if (b2[0]=='+'){int sum=0;for (int i=1; i<strlen(b2);i++ ){sum+=b2[i]-48;sum*=10;}sum=sum/10;if (sum>=strlen(b1)){char d[10000];int num=sum-strlen(b1)+3;for (int i=0;i<num ;i++ ){d[i]='0';}if (b1[0]=='+'){if (b1[1]=='0'){for (int i=1;i<strlen(b1) ;i++ ){if (b1[i]!='.'&&i!=1){cout<<b1[i];}}for (int j=0; j<num;j++ ){cout<<d[j];}}else{for (int i=1;i<strlen(b1) ;i++ ){if (b1[i]!='.'){cout<<b1[i];}}for (int j=0; j<num;j++ ){cout<<d[j];}}}if (b1[0]=='-'){if (b1[1]=='0'){for (int i=0;i<strlen(b1) ;i++ ){if (b1[i]!='.'&&i!=1){cout<<b1[i];}}for (int j=0; j<num;j++ ){cout<<d[j];}}else {for (int i=0;i<strlen(b1) ;i++ ){if (b1[i]!='.'){cout<<b1[i];}}for (int j=0; j<num;j++ ){cout<<d[j];}}}}if (sum<strlen(b1)){if (sum+3==strlen(b1)){for (int i=2;;i++ ){char dian=b1[i];b1[i]=b1[i+1];b1[i+1]=dian;if (b1[2+sum]=='.'){break;}}if (b1[1]=='0'){for (int j=0;j<strlen(b1) ;j++ ){if (b1[j]!='+' && b1[j]!='.' && j!=1){cout<<b1[j];}}}else {for (int j=0;j<strlen(b1) ;j++ ){if (b1[j]!='+'&&b1[j]!='.'){cout<<b1[j];}}}}else if (sum>strlen(b1)-3){char d[10000];for (int i=0;i<sum-strlen(b1)+3 ;i++ ){d[i]='0';}for (int i=2;;i++ ){char dian=b1[i];b1[i]=b1[i+1];b1[i+1]=dian;if (b1[2+sum]=='.'){break;}}if (b1[1]=='0'){for (int j=0;j<strlen(b1) ;j++ ){if (b1[j]!='+'&&j!=1){cout<<b1[j];}}for (int i=0;i<sum+3-strlen(b1) ;i++ ){cout<<d[i];}}else {for (int j=0;j<strlen(b1) ;j++ ){if (b1[j]!='+'){cout<<b1[j];}}for (int i=0;i<sum+3-strlen(b1) ;i++ ){cout<<d[i];}}}else{for (int i=2;;i++ ){char dian=b1[i];b1[i]=b1[i+1];b1[i+1]=dian;if (b1[2+sum]=='.'){break;}}if (b1[1]=='0'){for (int j=0;j<strlen(b1) ;j++ ){if (b1[j]!='+'&&j!=1){cout<<b1[j];}}}else {for (int j=0;j<strlen(b1) ;j++ ){if (b1[j]!='+'){cout<<b1[j];}}}}}}if (b2[0]=='-'){int sum=0;for (int i=1; i<strlen(b2);i++ ){sum+=b2[i]-48;sum*=10;}sum=sum/10;int num=sum+2;char c[10000];for (int i=0;i<sum+2 ;i++ ){if (i==0){c[0]=b1[0];}else if (i==2)c[i]='.';else c[i]='0';}if (c[0]=='+'){for (int i=1 ;i<num ;i++ ){cout<<c[i];}for (int i=1;i<strlen(b1) ;i++ ){if (b1[i]!='.'){cout<<b1[i];}}}if (c[0]=='-'){for (int i=0 ;i<num ;i++ ){cout<<c[i];}for (int i=1;i<strlen(b1) ;i++ ){if (b1[i]!='.'){cout<<b1[i];}}}}}




原创粉丝点击