[ create a new paste ] login | about

Link: http://codepad.org/FRP16lbN    [ raw code | output | fork ]

PhoeniX888 - C++, pasted on Jul 21:
#include "stdio.h"
#include "string.h"

void add_big(char* bg1,char* bg2)
{int lb1 = strlen(bg1);
	int lb2 = strlen(bg2);
	char *bg ;
	int l = lb1>lb2?(lb1+1):(lb2+1);
	
	if(lb1 > lb2)
	{
		bg = new char[lb1+1];
		memset(bg,'0',lb1+1 );
		
		memcpy((bg+lb1-lb2 ),bg2,lb2);
		bg[lb1]='\0';
		bg2 = bg;
	}
	else if(lb1 < lb2)
	{
		bg = new char[lb2+1];
		memset(bg,'0',lb2+1 );
		
		memcpy((bg+lb2-lb1 ),bg1,lb1);
		bg[lb2]='\0';
		bg1 = bg;
	}
	char *Result = new char [l];
	Result[l] = '\0';
	//char carry[2] = {0};
	int carry = 0;
	int pos = 1;
	while(pos != l)
	{
		if((*(bg1 + l-1 -pos) - '0' + *(bg2 + l-1- pos) - '0' + carry) > 9)
		{
			Result[l-pos]  = ((*(bg1 + l-1 -pos) + *(bg2 + l-1- pos) + carry)  - 10) - '0';
			carry = 1; 
			pos++;
		}
		else
		{ 
			Result[l-pos]	= *(bg1 + l-1 -pos)  + *(bg2 + l-1 - pos) + carry  - '0';
			carry = 0;
			pos++;
		}
	}
	if(carry>0)
	{Result[0] = carry + '0'; }
	else
	{Result[0] = '0'; }
		
	printf("Sum::: = %s\n",Result);
}
int main()
{
    char test_str1[] = "99999999999999999999999999";
    char test_str2[] = "99999999999999999999999999";
    add_big(test_str1,test_str2); 
    return 0;
}


Output:
1
Sum::: = 199999999999999999999999998


Create a new paste based on this one


Comments: