Problema en variable int

Iniciado por meoit ARG, 28 Abril 2014, 21:56 PM

0 Miembros y 1 Visitante están viendo este tema.

eferion

Cita de: leosansan en 30 Abril 2014, 15:08 PM
Gracias, muchas gracias eferion por tus palabras de comprensión.

¿Gracias? no hace falta :), yo también aprendo cosas en este foro... las gracias son mutuas.

Blaster

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..

Código (cpp) [Seleccionar]
#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..