Yo tambien quisiera dar un pequeño aporte con este pequeño codigo que me costo
un poco realizar opera muy bien con cifras muy grandes segun las pruebas que le realice..
#include <iostream>
#include <cstring>
#define max 50
bool Sumar(char *str1, char *str2, char *r);
int main(void)
{
char n1[] = "12345612345612345612345612345612312348513552";
char n2[] = "87654321123456787654321234567851515";
char suma[max] = "";
Sumar(n1, n2, suma);
std::cout << n1 << "\n+\n" << n2 << "\n\n" << suma << std::endl;
return 0;
}
bool Sumar(char *str1, char *str2, char *r)
{
char c1, c2;
int carry = 0;
int a = strlen(str1), b = strlen(str2);
r[a > b? a : b] = 0;
do{
a--, b--;
(a < 0)? c1 = '0' : c1 = str1[a];
(b < 0)? c2 = '0' : c2 = str2[b];
r[a > b? a : b] = carry + c1 + c2 - '0';
r[a > b ? a : b] > '9'? r[a > b ? a : b] -= 10, carry = 1 : carry = 0;
}while (a > 0 || b > 0);
if (carry){
if (strlen(r) < max){
for (int i = strlen(r)+1; i > 0; i--)
r[i] = r[i-1];
r[0] = '1';
return false;
}
}
return true;
}
Saludos..