C/Visual C - como manejar super enteros de mas de 100 digitos

 
Vista:

como manejar super enteros de mas de 100 digitos

Publicado por Luz America (1 intervención) el 21/10/2000 00:00:00
como hacer las cuatro operaciones basicas (+,-,*,/)por favor suministrarme codigo fuente en lo posible, o explicarme la manera de hacerlo.

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como manejar super enteros de mas de 100 digito

Publicado por Germán B. (143 intervenciones) el 21/10/2000 00:00:00
Interesante pregunta, pero ¿para qué necesitas semejante cosa? lo pregunto de curioso nomás.
Se podría crear una clase super_int que implemente todas las operaciones; sin pensarlo demasiado lo que se me ocurre es usar un pedazo de memoria con la cantidad máxima de bytes necesaria, y que las operaciones trabajen manipulando los bits directamente. Pero no tengo muy claro como sería, espero ver más ideas.
G
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como manejar super enteros de mas de 100 digito

Publicado por Christian A. Valeria Celedón (13 intervenciones) el 22/10/2000 00:00:00
Yo estoy haciendo algo similar trabajando los números como cadenas. Hasta el momento solo tengo la función para sumar (Las otras las estoy haciendo). La función se llama de la siguiente manera:
sumastr("2500", "475", s);
esto haría que la variable s tomase el valor "2975". Espero que te sirva...

void sumastr(char* s1, char* s2, char* total)
{
int sum = 0, car = 0, len, i;
char *iaux1, *iaux2, *itotal;
strcpy(iaux1, s1);
strcpy(iaux2, s2);
strcpy(total, "");
strinv(iaux1);
strinv(iaux2);

itotal = total;

len = strlen(s1);
if (len > strlen(s2)) len = strlen(s2);

for(i=0; i<len; i++)
{
sum = (car + ((int)*(iaux1 + i) - 48) + ((int)*(iaux2 + i) - 48)) % 10;
car = (car + ((int)*(iaux1 + i) - 48) + ((int)*(iaux2 + i) - 48)) / 10;
*(itotal + i) = (char)(sum + 48);
}
if (strlen(s1) == strlen(s2))
{
*(itotal + i) = car;
*(itotal + i + 1) = 0;
}
else if (strlen(s1) < strlen(s2))
{
for(i=len; i<strlen(s2); i++)
{
sum = (car + ((int)*(iaux2 + i) - 48)) % 10;
car = (car + ((int)*(iaux2 + i) - 48)) / 10;
*2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como manejar super enteros de mas de 100 digito

Publicado por Christian A. Valeria Celedón (13 intervenciones) el 22/10/2000 00:00:00
Aquí va lo que falta
else if (strlen(s1) < strlen(s2))
{
for(i=len; i<strlen(s2); i++)
{
sum = (car + ((int)*(iaux2 + i) - 48)) % 10;
car = (car + ((int)*(iaux2 + i) - 48)) / 10;
*(itotal + i) = (char)(sum + 48);
}
*(itotal + i) = 0;
}
else if (strlen(s1) > strlen(s2))
{
for(i=len; i<strlen(s1); i++)
{
sum = (car + ((int)*(iaux1 + i) - 48)) % 10;
car = (car + ((int)*(iaux1 + i) - 48)) / 10;
*(itotal + i) = (char)(sum + 48);
}
*(itotal + i) = 0;
}
strinv(itotal);
strcpy(total, itotal);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Una clase de enteros de N bytes

Publicado por Fabián Sierra Carvajal (50 intervenciones) el 24/10/2000 00:00:00
He implementado una clase C++ de enteros de N bytes con las operaciones
*,/,+,-,++,--,% y potencia, que es compatible con los enteros de 4 bytes tradicionales.
Si la necesitas aún, puedo enviarte el código fuente.
¡Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una clase de enteros de N bytes

Publicado por German B. (143 intervenciones) el 04/11/2000 00:00:00
Contanos por lo menos la forma de resolverlo, por curiosidad... gracias.
G
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Una clase de enteros de N bytes

Publicado por Jose (1 intervención) el 14/05/2011 21:39:43
Hola,
me gustaria ver tu codigo si es que aun lo tienes, yo tengo que implementar una para 200 digitos y no se me ha ocurrido nada, podria tener tu codigo¿¿
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar