mcd en vba y otra duda

  • Iniciador del tema Iniciador del tema fender
  • Fecha de inicio Fecha de inicio

fender

Usuario Nuevo nvl. 1
23 Jul 2007
94
0
6
NULL
ola tengo una dudar estoi haciendo este algoritmo espero q me ayuden por la logica supiongo que esta bien pero a la hora de hacerlo andar no me mando lo quiero ayuda de antemano gracias


Sub mcd()
Dim x, n1, n2, i, n, mcd As Integer
x = 0
i = 1
n1 = InputBox("ingrese numerador")
n2 = InputBox("ingres denominador")

If n1 > n2 Then
n1 = n
ElseIf n2 > n1 Then
n2 = n
End If

Do While i <= n
mcd=x
If ((n1 Mod n = 0) And (n2 Mod n = 0)) Then
[FONT=arial, helvetica, clean, sans-serif]x=i
endif
i=i+1
loop

msgbox("el mcd es ") & x

ya eso es . lo otro escrubuendolo como puedo guardar un valor dandose lo sigueiente
en un loop mientras una condicion se ciumpla me guarde ese valor del loop si no que avance y pruebe hasta llegar al final guardando el ultimo valor del loop mientras la condicion se cumpla

espero puedan ayudarme please

[/FONT]
 
pues donde tienes la linea mcd=x no se para que la usas porque aparte de asignarle el valor de x no haces nada mas con ella

puede que el problema radique aqui If ((n1 Mod n = 0) And (n2 Mod n = 0)) Then ya que n no le asignas una variable a n sino que le colocas el valor de n (que esta vacia) a n1 o a n2 dependiendo del valor de estas

aqui
If n1 > n2 Then
n1 = n
ElseIf n2 > n1 Then
n2 = n
End If


asi que supongo que primero deberias darle valor a n antes de intentar hacer algo ya que segun como lo veo el if que tienes dentro del while nunca se cumplira, ademas si explicas un poco mas de que es lo que intentas aser te podriamos ayudar un poco mas ya que como no sabemos el resultado que esperas es imposible ayudarte mas
 
el algoritmo que intento sacar es el del maximo comun divisor el cual es este:

Sub mcd()
Dim i, n1, n2, n, mcd As Integer
n1 = InputBox("ingrese numero 1 ")
n2 = InputBox("ingrese numero 2")
i = 1
If n1 >= n2 Then
n = n1
End If
If n1 < n2 Then
n = n2
End If

Do While i <= n
If (n1 Mod i) = 0 And (n2 Mod i) = 0 Then
mcd = i
End If
i = i + 1
Loop
MsgBox ("el mcd es ") & mcd

ahora el programa se me queda pegado ,supongo que la logica del programa esta buena pero en algo estoi fallando
 
Utiliza el algoritmo de euclides, el cual dice así:

En algoritmos informáticos, para sacar el MCD de dos números se suele utilizar el Algoritmo de Euclides: Dados dos enteros, 'a' y 'b', se mira cuál de ellos es el mayor. Si 'a' es el mayor, éste se sustituye por a - b. Si 'b' és el mayor, éste se sustituye por b - a. Así sucesivamente hasta que a = b. Es entonces cuando 'a' (o 'b', el que más rabia te de) es el MCD.
Para más números, debes tener en cuenta que el MCD(a,b,c) = MCD(MCD(a,b),c)

Cuando llegue a la casa lo intentaré en php. Saludos.
 
ahi esta o no ?


el algoritmo que intento sacar es el del maximo comun divisor el cual es este:

Sub mcd()
Dim i, n1, n2, n, mcd As Integer
n1 = InputBox("ingrese numero 1 ")
n2 = InputBox("ingrese numero 2")
i = 1
If n1 >= n2 Then
n = n1
End If
If n1 < n2 Then
n = n2
End If

Do While i <= n
If (n1 Mod i) = 0 And (n2 Mod i) = 0 Then
mcd = i
i = i + 1
else
mcd=i-1;
i=n+1;
End If

Loop
MsgBox ("el mcd es ") & mcd

ahora el programa se me queda pegado ,supongo que la logica del programa esta buena pero en algo estoi fallando