Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ordenar Tres Valores

Estas en el tema de Ordenar Tres Valores en el foro de Visual Basic clásico en Foros del Web. Saludos!! Tengo que hacer uun ejercicio para conseguir ordenar tres valores conseguidos de forma aleatoria. Hay un trozo del programa que no me sale!! Espero ...
  #1 (permalink)  
Antiguo 06/12/2007, 11:29
 
Fecha de Ingreso: diciembre-2007
Mensajes: 24
Antigüedad: 16 años, 4 meses
Puntos: 0
Pregunta Ordenar Tres Valores

Saludos!! Tengo que hacer uun ejercicio para conseguir ordenar tres valores conseguidos de forma aleatoria.

Hay un trozo del programa que no me sale!!
Espero que me podais ayudar
Un saludo!


Private Sub Ordenar_Click()
Dim Comodin As Integer
Dim Mayor As Integer
Dim Menor As Integer
If Label1.Caption > Label2.Caption Then
Mayor = Label1.Caption
Menor = Label2.Caption
Else
Mayor = Label2.Caption
Menor = Label1.Caption
End If
If Label3.Caption > Mayor Then
Medio = Mayor
Mayor = Label3.Caption
Else
Medio = Label3.Caption
End If
If Medio > Menor Then
Comodin = Medio
Menor = Medio
Medio = Comodin
End If
Label4.Caption = Mayor
Label5.Caption = Medio
Label6.Caption = Menor
End Sub
  #2 (permalink)  
Antiguo 06/12/2007, 13:59
 
Fecha de Ingreso: septiembre-2005
Mensajes: 76
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Ordenar Tres Valores

Private Sub Ordenar_Click()
Dim Comodin As Integer
Dim Mayor As Integer
Dim Menor As Integer
Dim medio As Integer
If Val(Label1.Caption) > Val(Label2.Caption) And Val(Label1.Caption) > Val(Label3.Caption) Then
Mayor = Label1.Caption
If Val(Label2.Caption) > Val(Label3.Caption) Then
medio = Val(Label2.Caption)
Menor = Val(Label3.Caption)
Else
medio = Val(Label3.Caption)
Menor = Val(Label2.Caption)
End If
ElseIf Val(Label2.Caption) > Val(Label1.Caption) And Val(Label2.Caption) > Val(Label3.Caption) Then
Mayor = Val(Label2.Caption)
If Val(Label1.Caption) > Val(Label3.Caption) Then
medio = Val(Label1.Caption)
Menor = Val(Label3.Caption)
Else
medio = Val(Label3.Caption)
Menor = Val(Label1.Caption)
End If
ElseIf Val(Label3.Caption) > Val(Label1.Caption) And Val(Label3.Caption) > Val(Label2.Caption) Then
Mayor = Val(Label3.Caption)
If Val(Label2.Caption) > Val(Label1.Caption) Then
medio = Val(Label2.Caption)
Menor = Val(Label1.Caption)
Else
medio = Val(Label1.Caption)
Menor = Val(Label2.Caption)
End If
End If
Label4.Caption = "Numero mayor: " & Mayor
Label5.Caption = "Numero Medio: " & medio
Label6.Caption = "numero Menor: " & Menor
End Sub
__________________
Buby Systems
  #3 (permalink)  
Antiguo 06/12/2007, 14:20
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Re: Ordenar Tres Valores

Segundo post que no saben como ordenar.

Ahi te hise un ejemplo para Ordenar un Vector de 10 elementos (obviamente ampliable) de mayor a menor con el metodo burbuja. Trata de comprenderlo.

Código:
'---------- EJEMPLO PARA ORDENAR UN VECTOR DE MAYOR A MENOR CON METODO BURBUJA -----------
'---------------------- PROGRAMADO POR CULD, PARA FOROSDELWEB ----------------------------
'NOTA: Para hacerlo mas simple, use InputBox para captar los numeros, asi no hay que
'agregar ningun TextBox
'----------------------------------------------------------------------------------------

Private Sub Form_Load()
Dim X As Integer                'Variable para los FOR
Dim Vector(1 To 10) As Double   'El vector (se puede ampliar)
Dim Auxiliar As Double          'Variable auxiliar
Dim Escribio As String          'El InputBox solo admite String, asi que guardamos aca lo que escribe
Dim Modifico As Boolean         'Es una "MARCA" para saber si ya termino de ordenar

For X = 1 To 10                 'Realizo 10 cargas
    Escribio = InputBox("Ingrese un Numero (" & X & "/10)", "Ejemplo Ordenar Vector (BURBUJA)")
    Vector(X) = CDbl(Escribio)  'Como lo que escribe es STRING tengo que pasarlo a Double
Next X

Modifico = True                 'Asigno la marca para que realice por lo menos 1 vez
Do While Modifico = True        'Mientras se ordena hay que dar una vuelta mas
    Modifico = False            'Asigno la marca suponiendo que no va a ordenar
    For X = 1 To 9              'Recorro el vector (pongo 9 por que 10+1 es 11 y seria overflow)
        If Vector(X + 1) > Vector(X) Then   'Ya se entiende
            Auxiliar = Vector(X)            'Guardo Vector(X) ya que se va a modificar
            Vector(X) = Vector(X + 1)       'Modifico Vector(X)
            Vector(X + 1) = Auxiliar        'A Vector(X+1) le asigno Vector(X) que guarde en Auxiliar
            Modifico = True                 'Pongo la marca que se ordeno
        End If
    Next X
Loop

Dim Mensaje As String           'Esta variable la uso para mostrar un solo TextBox
Mensaje = "A continuacion se ordenan los numeros de Mayor a Menor" & vbNewLine  'El titulo

For X = 1 To 10                 'Recorro el vector
    Mensaje = Mensaje & vbNewLine & Vector(X)   'Pongo el valor dejando un renglon
Next X
Mensaje = Mensaje & vbNewLine & vbNewLine & "- - - EJEMPLO PRACTICO PARA ORDENAR VECTOR CON METODO BUBUJA - - -" & vbNewLine & vbNewLine & "Programador por CULD, para ForosDelWeb"
MsgBox Mensaje, , "Ejemplo Ordenar Vector (BURBUJA)"    'Muestro el mensaje
End                             'Finalizo
End Sub
  #4 (permalink)  
Antiguo 06/12/2007, 14:26
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Re: Ordenar Tres Valores

Menos lineas de codigo para ordenar 10 numeros... Fijate que tu programita tiene mas lineas y apenas ordena 3 numeros...

Ademas con cambiar el valor del vector, de 10 a mas, y de los For ya podes ordenar miles de numeros.

100% optimo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:54.