🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.c++
Article #104

Re: Desarrollo de Entero de Longitud Indefinida

#104
From: Pascal J. Bourguignon
Date: Thu, 14 Aug 2008 09:21
61 lines
3731 bytes
"R.G.A.M." <rgam1989@gmail.com> writes:

> Buenas a todos.
>
> Como un desaf�o, tengo en mente crear una clase que pueda almacenar un
> entero de una cantidad indefinida de d�gitos. Para ello, me valdr� de
> un array din�mico, que contendr� en cada elemento un "int". Cada valor
> "int" podr� tener a lo m�s un d�gito menos que la mayor cantidad de
> d�gitos que soporta el tipo en su totalidad, en el sistema de
> numeraci�n decimal.

�Porqu� tan complejidad?

Es mejor poner un solo d�gito en cada int, en base (1+MAX_INT).


Por ejemplo, en base diez:

C/USER[100]> (decompose-base 1234 10)
(4 3 2 1)


Lo mismo en base 2^32:

C/USER[101]> (decompose-base 5000000000000000000000000 (expt 2 32))
(620756992 2332688548 271050)

Hay m�s de quatro mil milliones de digitos diferentes, entre los
cuales estos tres digitos: "620756992" "2332688548" "271050", pero
vale.

Hacer as� simplifica los algoritmos: son los mismos que aplicamos
usualmente digito por digito.

> Mi problem�tica radica en que quiero sobrecargar el operador std::cin
> para esta clase, y en lo posible me gustar�a evitar trabajar con
> cadenas (sean "char" o "string"). �Existe alguna forma de adaptar al
> b�fer para ello? N�tese que debo poder calcular la cantidad de
> d�gitos, o vaciar el b�fer en sentido contrario al corriente.

Ahora, es verdad que un formato "binario" como el que propongo aqu�
hace mas dificil(*) la conversion en base diez, comparado a un formato
"BCD" (Binary Coded Decimal) como el que quieres usar.  La question es
si haces m�s entrada/salidas que calculos.

(*) es decir, la conversion de base no es dificil, pero necesita un
gran n�mero de divisiones o multiplicaciones.   


> Crear el constructor de la clase (asignando directamente un valor
> num�rico al declarar la variable), seg�n mi parecer, es un problema
> similar. Tambi�n me gustar�a ser guiado para ello.
>
> Agradecer� toda ayuda que puedan ofrecerme.

Tanbien se podria usar gmp http://gmplib.org/
http://www.gnu.org/software/gmp/manual/html_node/Language-Bindings.html
Pues, es una soluci�n al problema, pero te gasta el desaf�o...

-- 
__Pascal Bourguignon__
Technical Details
Message-ID: <7cy730eyv3.fsf@pbourguignon.anevia.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!cleanfeed2-a.proxad.net!nnrp8-2.free.fr!not-for-mail
References: <f5c6022a-3038-4574-a0f4-bbec4989d8f8@f36g2000hsa.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f53ec,1761539f9939c78b
X-Google-Attributes: gidf53ec,domainid0,public,usenet
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!cleanfeed2-a.proxad.net!nnrp8-2.free.fr!not-for-mail
Newsgroups: es.comp.lenguajes.c++
Subject: Re: Desarrollo de Entero de Longitud Indefinida
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA
      oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9
      033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac
      l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR
      mV+hO/VvFAAAAABJRU5ErkJggg==
X-Accept-Language:         fr, es, en
X-Disabled: X-No-Archive: no
References: <f5c6022a-3038-4574-a0f4-bbec4989d8f8@f36g2000hsa.googlegroups.com>
From: pjb@informatimago.com (Pascal J. Bourguignon)
Date: Thu, 14 Aug 2008 11:21:04 +0200
Message-ID: <7cy730eyv3.fsf@pbourguignon.anevia.com>
Organization: Anevia SAS
User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.1 (gnu/linux)
Cancel-Lock: sha1:Mzc5M2UyMWM1YjE1ZjRhZjUxNDVlNTM4MDJkZTYzODBmNDdhNTlkOQ==
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Lines: 61
NNTP-Posting-Date: 14 Aug 2008 11:21:02 MEST
NNTP-Posting-Host: 88.170.236.224
X-Trace: 1218705662 news-2.free.fr 27142 88.170.236.224:55293
X-Complaints-To: abuse@proxad.net