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 Loop5. 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?