<< Suma y potencia de números largos >> |
Este es un ejemplo de como usar la función sumarpositivos, que permite sumar enteros positivos largos representados como vectores. En este ejemplo se calcula 2^50+5^35. Como todavía no escribimos una subrutina para multiplicar, lo que hacemos es sumar el número muchas veces. De la misma manera se obtienen las potencias.
Defint A-Z
Const largo = 100
DIM a(1 TO 100)' Pienso que es el numero A
DIM b(1 TO 100)' Pienso que es el numero B
DIM c(1 TO 100)' Pienso que es el numero C
a(1) = 1' A=1
For x = 1 TO 50
sumarpositivos a(), a(), a()' A=2*A
Next x
'entonces A=2^50
b(1) = 1' B=1
For x = 1 TO 35
sumarpositivos b(), b(), c()' C=2*B
sumarpositivos c(), c(), c()' C=2*C=2*2*B=4*B
sumarpositivos c(), b(), b()' B=C+B=4*B+B=5*B
Next x
'entonces B=5^35
sumarpositivos a(), b(), c()
'entonces C=2^50+5^35
For x = 100 TO 1 Step -1
Print c(x);
Next x
Defint A-Z
Sub sumarpositivos (a() AS Integer, b() AS Integer, resultado() AS Integer)
'Const largo = 100'ya esta definida afuera
MeLlevo = 0' al principio no me llevo nada
For i = 1 TO largo
resultado(i) = a(i) + b(i) + MeLlevo' sumo cifra por cifra
If resultado(i) > 9 Then ' si es 10 o mas me llevo uno
resultado(i) = resultado(i) - 10
MeLlevo = 1
Else ' sino no me llevo nada
MeLlevo = 0
End If
Next i
If MeLlevo = 1 Then 'si me llevo una es que el numero era muy grande
Print "Error en la suma: resultado muy grande"
Error 6' Genera el error correspondiente
End If
End Sub
En Suma de números enteros largos podes encontrar como extender esta función a todos los enteros.
Lecciones relacionadas:
OmaNet Curso CyM98 | OmaNet - Educación Interactiva www.oma.org.ar/omanet | omanet@oma.org.ar |
mensajes: webmaster@oma.org.ar |