暂存

View Code
#include"iostream"
#include
"iostream"
using namespace std;

int n;
int mark=0;
char a[50] , b[50];
int c[50] , d[50];
int f[50] , e[50];
int La, Lb;
int marka, markb;
int s,t;
int i,j;
int _max;

int Max(int x, int y)
{
return x>y?x:y;
}
void Add()
{
memset(e,
0,sizeof(e));
int m=0,flag=0;
if(s>t)
{
for(i=s-1,j=t-1;i>=s-t,j>=0;i--,j--)
{
e[m
++]=(c[i]+d[j]+flag)%10;
flag
=(c[i]+d[j]+flag)/10;
}
for(i=s-t-1;i>=0;i--)
{
e[m
++]=(c[i]+flag)%10;
flag
=(c[i]+flag)/10;
}
}
else
{
for(i=t-1,j=s-1;i>=t-s,j>=0; i--,j--)
{
e[m
++]=(d[i]+c[j]+flag)%10;
flag
=(d[i]+c[j]+flag)/10;
}
if(t>s)
{
for(i=t-s-1;i>=0;i--)
{
e[m
++]=(d[i]+flag)%10;
flag
=(d[i]+flag)/10;
}
}
}
while(flag)
{
e[m
++]=flag%10;
flag
/=10;
}
Lb
=0;
for(i=m-1;i>=0;i--)
{
b[Lb
++]=e[i]+48;
if(i==_max) b[Lb++]='.';
}
memset(c,
0,sizeof(c));
memset(d,
0,sizeof(d));

}
int main()
{

while(cin>>n)
{
memset(b,
'0',sizeof(b));
Lb
=0;
while(n--)
{
s
=0,t=0;
cin
>>a;
La
=strlen(a);
marka
=La-1;
markb
=Lb-1;
for(i=0;i<La;i++) if(a[i]!='.') c[s++]=a[i]-'0';
for(i=0;i<La;i++)
if(a[i]=='.') { marka=i; break;}
for(i=0;i<Lb;i++) if(b[i]!='.') d[t++]=b[i]-'0';

for(i=0; i<Lb; i++)
if(b[i]=='.') { markb=i; break;}

_max
=Max(La-marka-1 , Lb-markb-1);

if(La-marka-1>Lb-markb-1)
{
for(i=Lb ; i<Lb+(La-marka-Lb+markb); i++)
d[t
++]=0;
}
else
{
for(i=La ; i<La+(Lb-markb-La+marka); i++)
c[s
++]=0;
}
Add();
}
int sign=Lb;

int LL=strlen(b);
int g=0;
for( i=0 ; i<Lb ; i++ ) if(b[i]=='.') sign=i;
for(i=0;i<sign;i++)
f[g
++]=b[i]-'0';
for(i=sign+1; i<=sign+16; i++) f[g++]=b[i]-'0';
int flag=0,k=0;
for(i=g-2;i>=0;i--)
{
if(f[i+1]>4)
{
f[i]
=(f[i]+1+flag)%10;
flag
=(f[i]+1+flag)/10;
}
else break;
}
if(flag) cout<<flag;
for(i=0;i<sign;i++)
{
cout
<<f[i];
}
cout
<<".";
for(i=sign;i<sign+12;i++)
cout
<<f[i];
cout
<<endl;
}
return 0;
}
原文地址:https://www.cnblogs.com/FCWORLD/p/2041292.html