codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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; }
Private
[
?
]
Run code
Submit