PAT-乙級-1024. 科學計數法 (20) 求問為什麼測試點4通不過???
我的程式碼(冗長勿噴):
求問為什麼測試點4通不過???
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main(){
string A;
cin>>A;
int posE;
for(posE=0; posE<A.length(); posE++)
{
if(A[posE]=='E')
{
break;
}
}
string base,expS;
base = A.substr(1, posE-1);
expS = A.substr(posE+2, A.length());
int exp=0;
int L=expS.length();
for(int i=0; i<L; i++)
{
int c=expS[L-i-1] - '0';
exp+=c*pow(10, i);
}
if(exp==0)
{
if(A[0]=='+')
{
cout<<base<<endl;
}
else
{
cout<<A[0]<<base<<endl;
}
}
else if(A[posE+1]=='-')
{
if(A[0]=='-')
{
cout<<A[0];
}
cout<<"0.";
int add = exp -1;
for(int i=0; i<add; i++)
{
cout<<"0";
}
for(int i=0; i<base.length(); i++)
{
if(base[i]!='.')
{
cout<<base[i];
}
}
}
else if(A[posE+1]=='+')
{
int lenOfBase=base.length();
int right =lenOfBase -2;
if(exp >= right)
{
int add = exp - right;
if(A[0]=='-')
{
cout<<A[0];
}
for(int i=0; i<base.length(); i++)
{
if(base[i]!='.')
{
cout<<base[i];
}
}
for(int i=0; i<add; i++)
{
cout<<"0";
}
}
else
{
int index;
for(index=0; index<exp+2; index++)
{
if(base[index]!='.')
{
cout<<base[index];
}
}
cout<<".";
for(; index<base.length(); index++)
{
cout<<base[index];
}
}
}
return 0;
}