Enviado por Kalith en C/C++, Programacion
Sumar numeros muy grandes c++
Buenas.
Resolviendo un pequeño problema me encontre con que debía sumar numeros gigantes que no cabían en ningún tipo de dato disponible en c++ asi que pues hice esta pequeña implementacion, supongo que deben existir formas mas cortas de hacerlo, mas eficientes, y que lo hagan de forma mas óptima asi como existe le algoritmo de Karatsuba para la multiplicación pero vale acotar que es solo una chapuza.
Suerte que existen clases ya hechas para numeros grandes en c++, esta a recomendacion de Llyn la cual es BigInt luego habrá tiempo de hablar de ella.
Sin mas largas al asunto dejo el codigo solo de la funcion, el archivo completo esta AQUI
string sumarCadena(string str1, string str2)
{
int llevo = 0, parcial;
string res = "";
stringstream ultimo;
if(str1.length() > str2.length())
str2 = completar(str2, str1.length() - str2.length());
else
if(str1.length() < str2.length())
str1 = completar(str1, str2.length() - str1.length());
for(int i = str1.length() - 1; i >= 0; i--)
{
parcial = charToInt(str1[i]) + charToInt(str2[i]) + llevo;
if(parcial > 0x9 && i != 0x0)
{
parcial -= 10;
llevo = 1;
}
else
llevo = 0;
if(i == 0x0 && parcial > 0x9)
{
ultimo << parcial;
res += invertirCadena(ultimo.str());
}
else
res += intToChar(parcial);
}
return invertirCadena(res);
}
saludos
Posts Relacionados
- Suma de dos números en base ‘n’ Tenemos dos números como cadena de caracteres, ambas en la...
- itoa y atoi Buenas. Ya de alguna ocasión Llyn hablo sobre una de...
- Enviar emails con Visual C++ .NET Despues de tiempo sin escribir (ya se me acabaron las...
- Intento de grep en c++ Buenas. Necesitaba este pequeño programita para algo que estoy haciendo,...
- Balanceo de expresiones usando pilas en c++ Buenas El balanceo de expresiones (no se con que otro...
- 500! Buenas. Hace unos días en un post sobre permutaciones dabamos...
Menciones/Notificaciones
- best whey protein for women yahoo - some research. this means that, as a... writer, you have gone beyond looking on a search engine to find facts, and ...
- plus size clothing websites - that knowledge to your blog. blog content... can be easy and fun. when you have a blog and you want to ...



Ehh tio, pero que chapuza! por que hablas como si fueras español? xD
salu2
UsandoActualmente, traté de hacer un artículo acerca de la suma y las demás operaciones de números muy grandes en cualquier base en detalle, pero no logro continuar sin tener que explicar teoria de Algebra Lineal. En algun momento llegaré a alguna forma.
Un consejo, en “algorithm” se encuentra reverse(), lo cual realiza lo mismo de invertirCadena. No creo que exista algoritmo mas eficiente, no obstante el manejo de memoria con la clase string no es agradable (tengo el mismo problema en mi artículo similar, tampoco era mi objetivo de todas formas), vale mas la pena calcularlo previamente. Una idea, la cantidad de dígitos siempre será igual al tamaño del mayor número o este más 1.
En cualquier caso, buen artículo. Saludos.
Usando