码迷,mamicode.com
首页 > 其他好文 > 详细

【1753】带小数点的字符串处理,教你如何做人(╯‵□′)╯︵┻━┻

时间:2015-04-23 23:07:44      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
#include<stdio.h>
#include<string.h>
int l1,l2,l3,l4,s1[410],s2[410],s3[410],s4[410],s5[420];
void div(char x[],int a[],int b[],int &d,int &e){
    int l=strlen(x);d=e=0;
    while (x[d]!=.&&d<=l) d++;
    if (d<l){
        for (int i=0;i<=d-1;i++)
            a[d-i]=x[i]-0;
        for (int i=d+1;i<l;i++)
            b[i-d-1]=x[i]-0;
        e=l-d-1;
    }
    else{
        for (int i=0;i<l;i++)
            a[l-i]=x[i]-0;
        d=l;
    }
}

int cal(int n,int c){
    int t;
    for (int i=1;i<=n;i++){
        t=s1[i]+s3[i]+c;
        s1[i]=t%10;
        c=t/10;
    }
    if (c) {s1[n+1]=c;return n+1;}//ma
    else return n;
}

int calx(int n){
    int t,c=0;
    for(int i=n-1;i>=0;i--){
        t=s2[i]+s4[i]+c;
        s5[i]=t%10;
        c=t/10;
    }
    return c;
}

int main(){

    char x[420],y[420];
    int c;

    while(scanf("%s%s",x,y)!=EOF){
        c=0;
        memset(s1,0,sizeof (s1));
        memset(s2,0,sizeof (s2));
        memset(s3,0,sizeof (s3));
        memset(s4,0,sizeof (s4));
        memset(s5,0,sizeof (s5));

        div(x,s1,s2,l1,l2);
        div(y,s3,s4,l3,l4);

        if (l2>=l4) c=calx(l2);
        else c=calx(l4);

        if (l1>l3) l1=cal(l1,c);
        else l1=cal(l3,c);

        for (int i=l1;i>0;i--)
            printf("%d",s1[i]);

        int z=400;
        while (s5[z]<=0) z--;
            if (z>=0) {
                printf(".");
                for (int i=0;i<=z;i++)
                    printf("%d",s5[i]);
            }
        printf("\n");
    }
    return 1;
}
1753

今天简直被字符串教做人了(╯‵□′)╯︵┻━┻

 

【1753】带小数点的字符串处理,教你如何做人(╯‵□′)╯︵┻━┻

标签:

原文地址:http://www.cnblogs.com/travelller/p/4451971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!