• Domingo 22 de Diciembre de 2024, 08:48

Autor Tema:  Problema Serio: Factoriales  (Leído 1541 veces)

patpite

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Problema Serio: Factoriales
« en: Domingo 9 de Enero de 2005, 16:56 »
0
Necesito vuestra ayuda urgentemente!!

He de calcular factoriales de números como 50 y 100. Los resultados que obtengo son números (double) del orden de 2.6x10^64. Esos números tienen que ser índices en un array, pero claro, me da error de desbordamiento.

La cosa va de lo siguiente: formo grupos (por ejemplo, 2.64x10^64 grupos en total), y para cada uno de ellos hago una serie de operaciones. Tengo que recorrer un array de 0 a 2.64x10^64 y....¡¡ÑECCK!! error de desbordamiento!

¿Se os ocurre alguna otra solución? Si no lo arreglo, proyecto fin de carrera a tomar por saco...........

Gracias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema Serio: Factoriales
« Respuesta #1 en: Lunes 10 de Enero de 2005, 02:21 »
0
No debes almacenar todoel stack, sino mas bien podrias hacer dos cosas:

1- Buscar la manera de de almacenar todo en tro segmento d memoria independiente del que asigna el sistema operativo.... prueba usando coleciones.
2- Almacenar toda la informacion en un archivo temporal en el disco y solo mantener un segmento pequeño cargado en memoria y cuando s necesite se cambia el seg,mento de memoria  a disco y se lee un nuevo segmento de disco a memoria.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

patpite

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Problema Serio: Factoriales
« Respuesta #2 en: Lunes 10 de Enero de 2005, 19:40 »
0
Gracias por el consejo, JuanK, a ver si consigo arreglarlo...

Y ya que estamos, me gustaría saber tu opinión y la de más gente que leyera esto. El problema de los factoriales que os comento viene dado por lo siguiente: ese numerazo monstruoso que da al calcular el factorial es el número de operaciones que debe hacer el programilla que estoy haciendo. Es decir: factorial(X) =10^9 ==> 10^9 operaciones que tiene que hacer. (Son operaciones de ajuste de parámetros). Si, por ejemplo, tardase 1 décima de segundo en hacer cada operación, el tiempo total sería... ¡más de tres años en acabar de ajustar!

Bajo mi punto de vista, para un simple ajuste de parámetros (que es de lo que va el proyecto), considerar tantas operaciones me parece una salvajada (entre otras cosas porque me parece a mí que el ordenador empezaría a echar humo a las dos o tres semanas de estar haciendo cálculos como un poseso) :blink:

¿Os parece buena idea amenazar a mi tutor de proyecto con tirarme por un puente si me obliga a considerar como posible la opción de que mi programa realice todos esos cálculos? ¿alguno sabe de un puente efectivo?