Página 1 de 1

Ayuda VARIABLE de mayor tamaño

Publicado: 21 Mar 2016, 13:21
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

Re: Ayuda VARIABLE de mayor tamaño

Publicado: 22 Mar 2016, 22:59
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:)

Re: Ayuda VARIABLE de mayor tamaño

Publicado: 23 Mar 2016, 11:21
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

Re: Ayuda VARIABLE de mayor tamaño

Publicado: 23 Mar 2016, 12:43
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.

Re: Ayuda VARIABLE de mayor tamaño

Publicado: 23 Mar 2016, 16:30
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