[C con Clase] Trabajar con números exageradamente grandes.

Ivan Cachicatari ivancp en latindevelopers.com
Jue Jun 19 04:47:50 CEST 2014


Hola,

Creo que en este caso es buena idea utilizar una librería que permita
manejar ese tipo de números: https://gmplib.org/ es una ĺibrería que
implementa muchísimas operaciones:

Por ejemplo puedes hacer algo como esto:

 int main (void)
 {
   mpz_class a, b, c;

   a = 12345678;
   b = "1000000000000000000000000";
   c = a+b;
   cout << "La suma es " << c << "\n";

   return 0;
 }

Saludos.





El 16 de junio de 2014, 1:11, Julio Cesar <ggeatom en gmail.com> escribió:

> Hola a todos, recientemente mientras practicaba y leía el curso de C++ me
> surgieron un par de preguntas. La primera de estas es:
>
> (1) De que manera se podría definir una variable en C++, que pudiera
> almacenar un numero de hasta 100 (o más) digitos y que no sea usando
> cadenas de texto.
>
> Mi segunda pregunta seria la siguiente:
>
> (2) Si definimos la siguiente estructura y consideramos una variable de
> este tipo:
>
> struct STN {
>    long long N1;
>    long long N2;
>    long long N3;
> } Valor;
>
> Cómo se puede hacer para que yo almacene un numero en Valor de la
> siguiente manera:
>
> Supongamos que el numero (llamemos a este número "B") excede el valor
> maximo que puede almacenar una variable de tipo "long long", entonces lo
> que se tiene que hacer es, dado que no se puede almacenar tan solo en N1,
> guarde en N1 el valor máximo posible, despues considaramos el numero que
> resulta de restar a B el valor maximo de una variable long long, este nuevo
> numero lo intentamos almacenar en N2, si no cabe se almacena el valor
> maximo aceptable en N2 y el resto (lo que no se pudo almacenar en N2 se
> almacena en N3.
>
> A modo de ejemplo consideremos el numero A=9,999,999,999,999,999,999 el
> cual no es almacenable en una variable de tipo long long, entonces N1
> contiene el mayor elemento a almacenar y SUPONGAMOS que al restar A - N1
> nos queda el numero 666,666 y este se debe almacenar en N2.
>
> Para esta segunda duda, sospecho que se tiene que hacer con una función,
> así que mi problema esta mas orientado a como puedo yo manipular ese numero
> tan grande y como es que c++ interpreta este numero.
>
> Espero haberme explicado bien, de ante mano quiero agradecerles por la
> ayuda brindada. Qué tengan un buen día.
>
>
> Julio Cesar
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Ivan Cachicatari Poma
Movil: +(51) 51-9-5175-3803
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140618/3d918f6a/attachment.html>


Más información sobre la lista de distribución Cconclase