Visual Basic - Comparador

Life is soft - evento anual de software empresarial
 
Vista:

Comparador

Publicado por Juan Pablo (46 intervenciones) el 04/05/2006 22:50:02
Hola a todos. Me encuentro realizando un comparador entre 25 datos que poseo para mostrar el mayor de ellos en un control de texto.
El problema es que de la manera en que lo estoy haciendo es demasiado largo y engorroso, además de que temo que funcione, ya que lo más probable es que el PC se quede pegado por esta rutina.

Aquí les muestro más o menos lo que quiero pero con una rutina de 5 datos, el A, B, C, D y el E:

If A > B then
If A > C then
If A > D then
If A > E then
text1.text = Val(A)
else
text1.text = Val(E)
end If
else
If D > E then
text1.text = Val(D)
else
text1.text = Val(E)
end If
end If
else
If C > D then
If C > E then
text1.text = Val(C)
else
text1.text = Val(E)
else
If D > E then
text1.text = Val(D)
else
text1.text = Val(E)
end If
end If
end If
else
If B > C then
If B > D then
If B > E then
text1.text = Val(B)
else
text1.text = Val(E)
end If
else
If D > E then
text1.text = Val(D)
else
text1.text = Val(E)
end If
end If
else
If C > D then
If C > E then
text1.text = Val(C)
else
text1.text = Val(E)
else
If D > E then
text1.text = Val(D)
else
text1.text = Val(E)
end If
end If
end If
end if

Estos son apenas cinco datos, imagínense como es con 25 = |
Si hay alguna manera de hacerlo en forma mucho más fácil o algún comando, les agradecería que me indiquen.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Utiliza un Array

Publicado por Zoto (55 intervenciones) el 04/05/2006 23:14:01
Buenas, Juan Pablo.

Para hacer lo que pides, será mucho mejor que utilices un array o matriz para guardar tus datos. En este caso, sería un Array de 25 elementos de tipo Long, por ejemplo.
Aquí te muestro como quedaría el código, teniendo en cuenta que el TextBox donde se muestra el dato más grande se llama txtMayor:

'----------------------------
'código
'----------------------------

Dim Valores(24) As Long 'Array de 25 elementos

'Este procedimiento rellena cada elemento del Array con un valor numérico aleatorio, situado entre 0 y 10000, y sin decimales.

Private Sub IniciarValores()
For v = LBound(Valores) To UBound(Valores)
Valores(v)=Int(Rnd * 10000)
Next v
End Sub

'Esta función devuelve la posición del valor más grande (de 0 a 24).

Private Function ObtenerMayor() As Byte
ObtenerMayor=LBound(Valores) 'Se establece el primer elemento como el más grande

'Se recorre un bucle comparando desde el segundo elemento (el primero se inicia arriba para comparar con el segundo) hasta el último:

For v = LBound(Valores)+1 To UBound(Valores)
If Valores(v) > Valores(ObtenerMayor) Then ObtenerMayor=v
Next v

End Function

'----------------------------
'código
'----------------------------

Ahora simplemente pega esto en un formulario, llama al procedimiento IniciarValores en el Form_Load, y crea un botón que llame a la función ObtenerMayor y lo muestre en el TextBox llamado txtMayor.
Que haga algo así:

txtMayor.Text = Valores(ObtenerMayor)

Recuerda que la función ObtenerMayor no devuelve el valor numérico más grande, si no la posición del mismo en la lista.
Si no sabes como manejar los Arrays en Visual Basic, hace tiempo escribí un texto de explicación sobre el tema.

Sigue este link para verlo:

http://lawebdelprogramador.com/news/mostrar_new.php?id=93&texto=Visual+Basic&n1=350044&n2=1&n3=1&n4=1&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

Espero que te sirva. Mucha suerte y saludos.

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Utiliza un Array

Publicado por Juan Pablo (46 intervenciones) el 05/05/2006 17:42:37
Muchas gracias.

Con esto simplifico mucho lo que quiero hacer y es mucho más útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metodo burbuja

Publicado por Rodrigo Toledo Mauro (2 intervenciones) el 06/05/2006 02:12:55
Amigo, a esto tipo de ordenamiento en el colegio le llamabamos metodo burbuja, no se en otras partes y es muy sencillo

Dim Valor(25) as Integer
Dim Aux as Integer

' rellenas los 25 valores asignando Valor(1)=12, Valor(2)= 25 y asi sucesivamente.

Luego tienes

For J=1 To 24
For I=J+1 To 25
If Valor(I)<Valor(J) Then
Aux=Valor(I)
Valor(I)=Valor(J)
Valor(J)=Aux
Endif
Next I
Next J
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar