大数相加

#include<iostream>
#include<string>
using namespace std;

int helpAdd(const char *a,const char *b,char * result)
{   
    int len_a=strlen (a);
    int len_b=strlen (b);
    int len_max=len_a>len_b?len_a:len_b;
    int len_min=len_a>len_b?len_b:len_a;
    int len_r=len_max+1;
    int carry=0;
    int count=1;
    char * re=new char [len_max+2]; 
    re[len_r] ='\0';
    while(count <=len_min )
    {
       int tmp=(a[len_a-count]-48)+(b[len_b-count]-48)+carry;
       if(tmp>=10)
       {
          carry=1;
          tmp=tmp%10;
       }
       re[len_r-count]=tmp+48;  
       count++;       
    }
    while(count<=len_max)
    {   
        int tmp=0;
        if(len_a>len_b)
        {
            tmp=a[len_a-count]-48+carry;               
        }   
        else
        {
            tmp=b[len_b-count]+carry;    
        }
        if(tmp>=10)
        {
          carry=1;
          tmp=tmp%10;
        }
        re[len_r-count]=tmp+48;  
        count++; 
           
    }
    if(carry=1)
    re[len_r-count]=carry+48;
    else
     re[len_r-count]=0+48;
     
    char *t=re;
     
    while(*re!='\0')
     *(result++)=*(re++);
    *result='\0';
    delete []t;
    return 0;
}

int main()
{
    int r,n;
    char * result=new char (100);
    memset(result,0,100);
    int carry=helpAdd("999342142349","999932142143125",result);
    cout<<result<<endl;
    
    system("pause");
    return 0;    
}

 

posted @ 2014-12-01 17:05  lxdonge  阅读(120)  评论(0编辑  收藏  举报