<HTML>
<BODY>
<font face="Arial, Verdana, Helvetica, sans-serif"><span style="font-size: 12px;">Hola buen día,</span></font><div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px;"><br>
</div><div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px;">De pronto está librería te puede ayudar:</div><div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px;"><br>
</div><div><font face="Arial, Verdana, Helvetica, sans-serif"><span style="font-size: 12px;">https://gmplib.org/</span></font></div><div><font face="Arial, Verdana, Helvetica, sans-serif"><span style="font-size: 12px;"><br>
</span></font></div><div><span style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px;"> </span></div><div><div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px;">
<div>__________________________</div>
<div><font color="#000099">           <strong>José de Paz</strong></font></div>
<div> </div>
<div>@_jdepaz</div>
<div> </div>
<div><a href="http://unixescuintla.blogspot.com">http://unixescuintla.blogspot.com</a></div>
<div> </div>
<div>De Guatemala en Medellín</div>
<div>Technical Architect en Tata Consultancy Services</div><div><br>
<-----Mensaje original-----><br>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="99%" height="143"><tbody><tr><td width="3" bgcolor="#EFEFF1" height="131"> </td><td width="3" height="131"> </td><td width="98%" height="131"><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13px"><b>From: Facundo Curti [facu.curti@gmail.com]</b><br>
Sent: 17/6/2014 6:26:38 PM<br>
To: cconclase@listas.conclase.net<br>
Subject: Re: [C con Clase]Trabajar con números exageradamente grandes. </font><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13px"><br>
<br>
Lo unico que se me ocurre es usar malloc.
<br>
<br>
int *numero;
<br>
int size=256;
<br>
numero=malloc(size);
<br>
<br>
Reservas en memoria 256 bytes, que son apuntados por el puntero
<br>
"numero". Que es de tipo int. De todas formas, no estoy seguro de que
<br>
funcione. Puesto que el procesador solo puede trabajar de a 32 (4
<br>
bytes) ó 64 (8 bytes) bits. Por eso es que un int, en un procesador de
<br>
16 bits (telefonos viejos), debería ser de 2 bytes.
<br>
<br>
El problema en si, es que el procesador no puede trabajar con numeros
<br>
tan grandes :P Seguramente te lanzará un buffer overflow, o segv.
<br>
<br>
La solución, puede ser crear una clase para trabajar con estos
<br>
numeros. Algo como lo que mencionaste, solo que yo lo pensaria de esta
<br>
forma:
<br>
<br>
class{
<br>
      long long a;
<br>
      long long b;
<br>
      long long c;
<br>
}
<br>
<br>
Y si el numero fuera 1856887464312, almacenara en a, 18568 y en b,
<br>
87464312. Luego puedes sobrecargar los operadores de suma, resta e
<br>
igual, para que puedan trabajar con estos números. De esta forma,
<br>
evitas hacer tantas operaciones restando el numero máximo que
<br>
almacena, etc...
<br>
<br>
Se puede hacer lo que pides, pero no veo ninguna solución "ideal".
<br>
Diria que lo trabajes con clases y sobrecarga de operadores como te
<br>
mencioné arriba.
<br>
<br>
Saludos! ;)
<br>
<br>
El día 16 de junio de 2014, 3:11, Julio Cesar <ggeatom@gmail.com> escribió:
<br>
> Hola a todos, recientemente mientras practicaba y leía el curso de C++ me
<br>
> surgieron un par de preguntas. La primera de estas es:
<br>
>
<br>
> (1) De que manera se podría definir una variable en C++, que pudiera
<br>
> almacenar un numero de hasta 100 (o más) digitos y que no sea usando cadenas
<br>
> de texto.
<br>
>
<br>
> Mi segunda pregunta seria la siguiente:
<br>
>
<br>
> (2) Si definimos la siguiente estructura y consideramos una variable de este
<br>
> tipo:
<br>
>
<br>
> struct STN {
<br>
>    long long N1;
<br>
>    long long N2;
<br>
>    long long N3;
<br>
> } Valor;
<br>
>
<br>
> Cómo se puede hacer para que yo almacene un numero en Valor de la siguiente
<br>
> manera:
<br>
>
<br>
> Supongamos que el numero (llamemos a este número "B") excede el valor maximo
<br>
> que puede almacenar una variable de tipo "long long", entonces lo que se
<br>
> tiene que hacer es, dado que no se puede almacenar tan solo en N1, guarde en
<br>
> N1 el valor máximo posible, despues considaramos el numero que resulta de
<br>
> restar a B el valor maximo de una variable long long, este nuevo numero lo
<br>
> intentamos almacenar en N2, si no cabe se almacena el valor maximo aceptable
<br>
> en N2 y el resto (lo que no se pudo almacenar en N2 se almacena en N3.
<br>
>
<br>
> A modo de ejemplo consideremos el numero A=9,999,999,999,999,999,999 el cual
<br>
> no es almacenable en una variable de tipo long long, entonces N1 contiene el
<br>
> mayor elemento a almacenar y SUPONGAMOS que al restar A - N1 nos queda el
<br>
> numero 666,666 y este se debe almacenar en N2.
<br>
>
<br>
> Para esta segunda duda, sospecho que se tiene que hacer con una función, así
<br>
> que mi problema esta mas orientado a como puedo yo manipular ese numero tan
<br>
> grande y como es que c++ interpreta este numero.
<br>
>
<br>
> Espero haberme explicado bien, de ante mano quiero agradecerles por la ayuda
<br>
> brindada. Qué tengan un buen día.
<br>
>
<br>
>
<br>
> Julio Cesar
<br>
>
<br>
> _______________________________________________
<br>
> Lista de correo Cconclase Cconclase@listas.conclase.net
<br>
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
<br>
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
<br>
<br>
_______________________________________________
<br>
Lista de correo Cconclase Cconclase@listas.conclase.net
<br>
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
<br>
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
<br>
.
<br>
</font></td></tr></tbody></table></div></div></div>
</BODY></HTML>