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?
![]()