Ayuda VARIABLE de mayor tamaño

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
senior++
Mensajes: 6
Registrado: 23 Jun 2013, 12:58

Ayuda VARIABLE de mayor tamaño

Mensaje por senior++ »

Resulta que cree un programa de estas caracteristicas:

Cada nuevo término en la sucesión de Fibonacci se genera mediante la adición de los dos términos anteriores. Al comenzar con 1 y 2, los 10 primeros términos serán los siguientes:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Al tener en cuenta los términos de la sucesión de Fibonacci cuyos valores no superan los cuatro millones, hallar la suma de los términos más valorados.

Aquí el código:

Código: Seleccionar todo

Dim $numeroAnterior = 1
Dim $numeroSuperior = 1
Dim $Sumatotal = 0
Dim $sumaPares = 0
Dim $ParesTotal = 0
Dim $i = 1

While $i < 91
$Sumatotal = $numeroAnterior + $numeroSuperior ; 2     3      5
$numeroAnterior = $numeroSuperior ; 1        2       3
$numeroSuperior = $Sumatotal  ; 2 ;       3          2
$sumaPares = Mod($Sumatotal,2)
If ($sumaPares = 0) Then
	$ParesTotal = $Sumatotal + $ParesTotal
EndIf


$i = $i + 1
Wend
MsgBox(0,"prueba",$ParesTotal)
El programa lo hace todo bien hasta ciertas repeticiones en este caso 91, si pongo mas repeticiones en el while como por ejemplo 4.000.000 el Msgbox manda un numero NEGATIVO, creo que la suma es muuuuy grande que la variable no es capaz de capturar, me imagino que habrá una función que haga almacene mas en una variable ¿saben cual es?

Saludos
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Ayuda VARIABLE de mayor tamaño

Mensaje por BasicOs »

no tienes ese límite para la variable, es sobrado.
intenta hacer el programa para 4000 y cuando te funcione lo vas ampliando :smt021
Salu22:)
senior++
Mensajes: 6
Registrado: 23 Jun 2013, 12:58

Re: Ayuda VARIABLE de mayor tamaño

Mensaje por senior++ »

BasicOs escribió:no tienes ese límite para la variable, es sobrado.
intenta hacer el programa para 4000 y cuando te funcione lo vas ampliando :smt021
Salu22:)
pero es que el programa funciona bien, el problema es que el Msgbox cuando se trata de un numero grande no devuelve el valor correcto, mira un ejemplo muy sencillo

Código: Seleccionar todo

dim $primo = 999999999999999999999999999999999999

MsgBox(0,"",$primo)

El Msgbox devuelve otro valor que no tiene esa variable
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Ayuda VARIABLE de mayor tamaño

Mensaje por Chefito »

Autoit, como muchos otros lenguajes de programación, no está hecho para hacer grandes cálculos matemáticos. Tiene sus limitaciones, en cálculo y velocidad. Para eso hay otros lenguajes específicos, como por ejemplo el tan famoso MATLAB.
Igualmente en autoit puedes ir un poco más allá. Utiliza números en coma flotante (tipo Double) y tendrás más rango de cálculo.
Lo más fácil en tu caso para poner un número en coma flotante es asignándole un número con decimales, ejemplo: Dim $numeroAnterior = 1.0

En la ayuda te puedes ir a Autoit>Language Reference>Datatypes. Echale un vistazo.

Hay udf matemáticas hechas por otros usuarios que pueden que te ayuden....no se, no las he mirado y no se lo que ofrecen: https://www.autoitscript.com/wiki/User_ ... ions#Maths

También puedes intentar hacerlas tú, aunque debe ser algo complicado. Según lo que quieras.

Por cierto, el programa de la serie de fibonacci simple hecho por un usuario del foro de habla inglesa :smt003 .
https://www.autoitscript.com/forum/topi ... ent-101468

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
senior++
Mensajes: 6
Registrado: 23 Jun 2013, 12:58

Re: Ayuda VARIABLE de mayor tamaño

Mensaje por senior++ »

Muchas gracias al final utilice un paquete UDF con funciones incluidas, aún así no hacía falta :smt021

Yo había leído mal el ejercicio, ya me extrañaba que fuese un numero tan largo,aun que lo hice bien,pero lo que pedía era que calculara los pares MENORES al valor de 4.000.000, y claro se nota la diferencía, pero por lo menos ya se usar UDF y como incluirlas...

Muchas gracias
Responder