Curso Básico de Programación
en Visual Basic

Soluciones de los ejercicios de la Novena Entrega: 23/Sep/97.
por Guillermo "guille" Som

 

Pues aquí están las soluciones, creo que esta forma de darlas será la mejor, ya que no tendrás que esperar a que esté lista la siguiente entrega para saber si has conseguido resolver los problemillas/ejercicios con éxito...

El juego básico:

    Dim n As Integer
    Dim x As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        n = Val(InputBox$("Escribe un número del 1 al 100"))
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado."

1. Comprobar que el número introducido en el InputBox esté entre 1 y 100, en caso de que no sea así, volver a preguntar. Una de las soluciones, sin usar el GOTO:

    Dim n As Integer
    Dim x As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        Do
            n = Val(InputBox$("Escribe un número del 1 al 100"))
        Loop While n < 1 Or n > 100
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado."

2. Si se escribe CERO mostrar el número que el VB había "pensado" y terminar.

    Dim n As Integer
    Dim x As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        Do
            n = Val(InputBox$("Escribe un número del 1 al 100"))
            If n = 0 Then
                MsgBox "Mi número era el " & CStr(x)
                Unload Me
                End
            End If
        Loop While n < 1 Or n > 100
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado."

3. Cuando lo acertemos que nos indique en cuantos intentos lo hemos conseguido.

    Dim n As Integer
    Dim x As Integer
    Dim v As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        Do
            n = Val(InputBox$("Escribe un número del 1 al 100"))
            If n = 0 Then
                MsgBox "Mi número era el " & CStr(x)
		'Si está en el Form_Load
                'End
		'Si está en un procedimiento
		Exit Sub
            End If
        Loop While n < 1 Or n > 100
        v = v + 1
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado en " & CStr(v) & " veces."

4. Ahora al revés, es decir: que nosotros pensemos un número del 1 al 100 y el VB intente adivinarlo, para ello deberá mostrarnos un número y nosotros indicarle si lo ha acertado.

    Dim x As Integer
    Dim v As Integer

    Randomize Timer
    Do
        x = Int(Rnd * 100) + 1
        v = v + 1
        If MsgBox("Mi número es: " & CStr(x) & Chr$(13) & "¿He acertado?", 4) = 6 Then
            MsgBox "Lo he acertado en " & CStr(v) & " veces."
            Exit Do
        End If
    Loop

5. Otro igual, pero indicándole si nuestro número es Menor, Mayor o es correcto... habrá que darle las mismas oportunidades... (este es el que tiene el "truco" del divide y vencerás...

    Dim x As Integer
    Dim v As Integer
    Dim a As Integer
    Dim z As Integer

    a = 1
    z = 100
    'En este caso no necesitamos números aleatorios
    Do
        x = (z - a) / 2 + a
        v = v + 1
        If MsgBox("Mi número es: " & CStr(x) & Chr$(13) & "¿He acertado?", 4) = 6 Then
            MsgBox "Lo he acertado en " & CStr(v) & " veces."
            Exit Do
        Else
            If MsgBox("Entonces... ¿ " & CStr(x) & " es mayor?", 4) = 6 Then
                'El número del ordenador es mayor
                'debe estar entre x-1 y a
                z = x - 1
            Else
                'El número del ordenador es menor
                'debe estar entre x+1 y z
                a = x + 1
            End If
        End If
    Loop

 

Ahora a esperar a la décima entrega que será dentro de poquito... un mes, un año... ¿quién sabe?


 

Ir al índice principal del Guille