Article View: es.comp.lenguajes.c++
Article #104Re: Desarrollo de Entero de Longitud Indefinida
From: Pascal J. Bourguignon
Date: Thu, 14 Aug 2008 09:21
Date: Thu, 14 Aug 2008 09:21
61 lines
3731 bytes
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-mailReferences:
<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