Mi primer programa en Visual Basic

Hola expertos tengo una duda, ya se que hay que leer manuales y demás elementos de ayuda, y lo he hecho, la cosa es que siempre use Visual Fox y quiero arrancar con Visual Basic y me encontré con unas dudas, seguramente sean simple pero bue, este mismo programa con FOX anda bien pero en Visual Basic tengo algunos inconvenientes.
Como podrán observar más abajo lo que hace el código es lo sig.
1) Asigna a 6 variables un numero aleatorio del 1 al 45.
2) Compara que no se repitan, en caso de hacerlos le asigna otro numero aleatorio.
3) Los ordena de menor a mayor.
4) Le asigna el valor de la variable al Cuadro texto que corresponda.
Los problemas son que LOS NÚMEROS SE REPITEN por lo tanto no funciona el punto 2, y cuando genero el ejecutable siempre salen los mismos números al volver a ejecutarlo.
Este es el código:
Private Sub Command1_Click()
a = Int(45 * Rnd())
b = Int(45 * Rnd())
c = Int(45 * Rnd())
d = Int(45 * Rnd())
e = Int(45 * Rnd())
f = Int(45 * Rnd())
cambio = 1
x = 0
Do While a = b Or a = c Or a = d Or a = e Or a = f
    a = Int(45 * Rnd())
Loop
Do While b = c Or b = d Or b = e Or b = f
    b = Int(45 * Rnd())
Loop
Do While c = d Or c = e Or c = f
    c = Int(45 * Rnd())
Loop
Do While c = e Or c = f
    d = Int(45 * Rnd())
Loop
Do While c = f
    e = Int(45 * Rnd())
Loop
Do While cambio = 1
    cambio = 0
    If a > b Then
        x = b
        b = a
        a = x
        cambio = 1
    End If
    If b > c Then
        x = c
        c = b
        b = x
        cambio = 1
    End If
    If c > d Then
        x = d
        d = c
        c = x
        cambio = 1
    End If
    If d > e Then
        x = e
        e = d
        d = x
        cambio = 1
    End If
    If e > f Then
        x = f
        f = e
        e = x
        cambio = 1
    End If
Loop
Text1.Text = a
Text2.Text = b
Text3.Text = c
Text4.Text = d
Text5.Text = e
Text6.Text = f
End Sub

1 Respuesta

Respuesta
1
Si no quieres que te slgan los mismos números en el programa tendrías que aumentar la siguiente instrucción en el evento Load del formulario:
Randomize
Quedando de la siguiente forma:
Private Sub Form_Load()
    Randomize
End Sub
Ahora en que se repitan algunos numero eso, es por la lógica que estas utilizando en tu programa. Comparas que a sea diferente al resto, luego comparas que b sea diferente al resto, pero no verificas que sea diferente a a, lo mismo sucede con las otras variables, comparas con la siguientes pero, no con las anteriores. Te sugiero que revises un poco esa tu lógica
Gracias renevt, me sirvió tu respuesta, y la lógica esta bien solo que de tanto copiar y pegar me confundí en los últimos ciclos, ahora anda todo bien.
Dejo el código por si a alguien lo necesita, para ver como comparar u ordenar es muy primitivo pero funciona.
Private Sub Form_Load()
Randomize
a = Int(45 * Rnd())
b = Int(45 * Rnd())
c = Int(45 * Rnd())
d = Int(45 * Rnd())
e = Int(45 * Rnd())
f = Int(45 * Rnd())
cambio = 1
x = 0
Do While a = b Or a = c Or a = d Or a = e Or a = f
    a = Int(45 * Rnd())
Loop
Do While b = c Or b = d Or b = e Or b = f
    b = Int(45 * Rnd())
Loop
Do While c = d Or c = e Or c = f
    c = Int(45 * Rnd())
Loop
Do While d = e Or d = f
    d = Int(45 * Rnd())
Loop
Do While e = f
    e = Int(45 * Rnd())
Loop
Do While cambio = 1
    cambio = 0
    If a > b Then
        x = b
        b = a
        a = x
        cambio = 1
    End If
    If b > c Then
        x = c
        c = b
        b = x
        cambio = 1
    End If
        If c > d Then
        x = d
        d = c
        c = x
        cambio = 1
    End If
    If d > e Then
        x = e
        e = d
        d = x
        cambio = 1
    End If
    If e > f Then
        x = f
        f = e
        e = x
        cambio = 1
    End If
Loop
Text1.Text = a
Text2.Text = b
Text3.Text = c
Text4.Text = d
Text5.Text = e
Text6.Text = f
End Sub
Es el código del Formulario, después puse el mismo código sin el "ramdomize" en un botón de comando.
Saludos
Gracias me sirvió tu respuesta, sencilla pero para me que recién empiezo en Visual Basic es una gran mano, te dejo los puntos y nuevamente Gracias.
Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas