Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: DickGumshoe en 4 Julio 2012, 19:10 PM

Título: Problema con números largos
Publicado por: DickGumshoe en 4 Julio 2012, 19:10 PM
Hola.

Estoy haciendo problemas en los que algunas variables guardan números muy grandes. Por ejemplo, quiero calcular la suma de los dígitos del resultado de hacer 2 ^1000

La función de sumar los dígitos he comprobado que está bien, y la función pow() sé usarla, por lo que he supuesto a que el resultado es incorrecto debido a que trabajo con números muy grandes:


#include <stdio.h>
#include <math.h>

int suma(long long int n)
{
    if(n >= 0 && n < 10) return n;
    else return n%10 + suma(n/10);
}

int main()
{
    long long int num;
    int resultado;

    num = pow(2, 1000);

    resultado = suma(num);
    printf("Resultado: %d", resultado);
    return 0;
}



¿Qué puedo hacer? He visto que a veces recomiendan usar librerías externas, pero prefiero que me lo confirme alguien...

Saludos y muchas gracias.
Título: Re: Problema con números largos
Publicado por: SXF en 4 Julio 2012, 19:56 PM
Si me parace que la unica forma es utilizar una libreria extena como CLN.
Mira este enlace:
http://clan-destino42.blogspot.com.es/2011/01/numeros-grandes-en-c.html

Si te fijas en la documentacion te indica que  usando esta función:

cl_RA expt (const cl_RA& x, const cl_I& y)
cl_R expt (const cl_R& x, const cl_I& y)
cl_N expt (const cl_N& x, const cl_I& y)
Returns x^y.

puedes intentar obtener lo que quieres.
Puedes verlo aquí: http://www.ginac.de/CLN/cln_4.html#SEC22
Título: Re: Problema con números largos
Publicado por: DickGumshoe en 4 Julio 2012, 20:03 PM
Muchas gracias.

Esa librería utiliza clase, según el link que me has pasado, por lo creo que es de C++... ¿O se puede usar bien en C?

Saludos.
Título: Re: Problema con números largos
Publicado por: SXF en 4 Julio 2012, 20:14 PM
Si me parece que es pa c++ ya que usa clases. Y los prerequisitos parece indicar eso:
http://www.ginac.de/CLN/cln_2.html#SEC3
Aunque he encontrado otra que si creo que trabaja en c y c++.
http://gmplib.org
Título: Re: Problema con números largos
Publicado por: DickGumshoe en 4 Julio 2012, 21:56 PM
Muchas gracias, creo que esa va a ser la librería que me va a servir.

En el PDF que viene ahí, pone cómo instalar la librería en UNIX... Pero, ¿cómo se instala en Windows 7 en CodeBlocks? Solo he instalado por ahora la librería Allegro, y no sé muy bien todavía cómo hacerlo...

Saludos.
Título: Re: Problema con números largos
Publicado por: avesudra en 5 Julio 2012, 02:59 AM
Toma aquí viene , en ingles pero bueno... http://www.cs.nyu.edu/exact/core/gmp/

Título: Re: Problema con números largos
Publicado por: DickGumshoe en 5 Julio 2012, 12:28 PM
Muchas gracias, avesudra.