Académique Documents
Professionnel Documents
Culture Documents
Problema 1.
Solicitar al usuario un valor entero N y mostrar la suma todos sus divisores excepto el uno y l
mismo. Por ejemplo, si N=36, la suma de todos sus divisores es 54 (2+3+4+6+9+12+18). El
programa deber:
Comprobar que el nmero dado por el usuario es mayor 0. En caso contrario, marcar
error y volver a pedir el nmero hasta que cumpla dicha condicin.
Imprimir los nmeros que hacen divisible a N.
Sumar los nmeros que imprime y mostrar en pantalla el total en pantalla.
NOTA: para ver si un entero es divisible por otro entero, debe usarse el operador Mod.
Option Explicit On
Option Strict On
Module Divisor
Sub Main()
Dim numero, suma, inicio As Integer ' Se declaran las variables y el tipo de datos
' se inicializa la variable suma a cero, que es nico valor que no altera la primera suma
' suma es un acumulador
suma = 0
Do
Console.Write("Dame un numero entero ") ' imprime un mensaje para el usuario
numero = CInt(Console.ReadLine()) ' Lee un dato de teclado y lo convierte a Entero
'Se hace el ciclo for desde 2 hasta el nmero que ha dado el usario -1.
'Si el usario da 16, el valor de la variable inicio va 2 hasta 15
'Si el usuario ha dado un nmero negativo, cero o 1. Este ciclo no se ejecuta.
For inicio = 2 To numero - 1 Step 1
If numero Mod inicio = 0 Then ' Se comprueba si el resto de dividir el nmero del
usario entre el valor de inicio es 0.
suma = suma + inicio ' Si la condicin se cumple se acumula el valor de inicio
en la variable suma.
Console.WriteLine(inicio) ' Imprime todos los nmeros que dividen al nmero del
usuario.
End If
Next
If numero <= 0 Then ' Pregunta si el usuario ha dado un nmero menor o igual a 0.
Console.WriteLine("ERROR el nmero debe ser mayor a cero") ' Si la condicin del if
se cumple, se imprime mensaje de error.
End If
Loop Until numero > 0 'El ciclo se repite hasta el usuario no haya dado un nmero mayor a
cero.
Console.WriteLine("la suma es " & suma) ' Se imprime el acumulado de los nmeros que han
dividido al nmero del usuario.
Console.ReadLine()
End Sub
End Module
Problema 2
El programa debe solicitar al usuario dos valores: inicio y fin. Una vez dados dichos valores, el
programa calcular:
+1
=
Los clculos se harn independientemente de que el valor de inicio sea mayor que al de fin o
viceversa. El programa mandar un mensaje de error en el caso de que alguno de los dos datos
tenga un valor menor o igual a cero y volver a pedirlos.
Option Explicit On
Option Strict On
Module Producto
Sub Main()
Dim inicio, fin, temporal As Integer 'Declaracin de las variables de tipo entero
Dim multiplica As Long ' La variable multiplica se declara como un entero largo por el valor
que puede tomar la multiplicacin
inicio = CInt(InputBox("valor inicio")) ' Se pide el valor de inicio al usuario
Do While inicio <= 0 ' En caso de que se cumpla que valor que ha dado sea menor o igual a
cero
MsgBox("inicio debe ser mayor a cero", MsgBoxStyle.Information, "ERROR ENTRADA DE
DATOS") ' Se muestra mensaje de eror
inicio = CInt(InputBox("valor inicio")) ' se vuelve a pedir el dato
Loop
End Sub
End Module
Problema 3
NOTA: La funcin Rnd() devuelve un valor aleatorio real en el intervalo (0, 1]. Para generar un
valor entero aleatorio entero entre a y b (ambos incluidos), se debe usar la expresin N = Int((b - a
+ 1) * Rnd + a).
Option Explicit On
Option Strict On
Module Juego
Sub Main()
' Se declaran como constantes los valores que no van a cambiar durante la ejecucin
Const MAXIMO As Integer = 9 ' Valor mximo a adivinar
Const MINIMO As Integer = 3 ' Valor mnimo
Const MAX_INTENTOS As Byte = 5 'Nmero de intentos permitidos
Dim numRepeticiones As Integer = 0 ' Se inicializa en 0 el nmero de veces que el usuario ha
intentado adivinar la variable
Dim numero, aleatorio As Integer ' almacenan el numero introducido por el usario, y el
nmero generado aleatoriamente por el sistema
Dim suma As Long = 0 ' almacenar la suma de todos los nmeros introducidos por el usario.
Se inicializa a 0
Dim porcentaje As Double = 0D ' Calcular el procentaje de aciertos
Randomize() ' inicializar la semilla
aleatorio = CInt(Int((MAXIMO - MINIMO + 1) * Rnd() + MINIMO)) 'Generar nmero aleatorio en
un rango
Do ' inicio ciclo
Console.Write("Adivina el nmero ==> ") 'Pregunta el nmero
numero = CInt(Console.ReadLine()) 'Almacena el nmero en nmero
suma = suma + numero 'Se acumula el nmero del usuario en la variable suma
1. Leer el enunciado.
2. Bosquejar una solucin en Pseudocdigo (descripcin de un algoritmo que resulta
independiente del lenguaje y que ser comprensible para el programador).
3. Codificar en Visual Basic.
4. Comparar soluciones
5. Leer los comentarios que incluye el programa.
Problema 1.
Se crear un vector que almacenar los caracteres que introduce el usuario. Solicitar al usuario
el nmero total de caracteres que contendr el vector, este nmero debe ser mayor a cero o
se volver a pedir al usuario tantas veces sea necesario. Pedir cada uno de los caracteres y
guardarlo en el vector. Mostrar todos los elementos del vector en un string.
El programa deber:
Comprobar que el nmero dado por el usuario es mayor 0. En caso contrario, marcar
error y volver a pedir el nmero hasta que cumpla dicha condicin.
Pedir los valores para el vector y almacenarlos.
Imprimir el contenido del vector.
Sub main()
Dim num_Elementos As Integer ' Variable que almacena el nmero de elementos
Dim vectorElementos(-1) As Char 'Declaracin de un vector tipo char
Dim respuesta As String 'almacena todos los elementos del vector
Do
num_Elementos = InputBox("Indica el nmero de elementos del vector")
Loop Until num_Elementos > 0 ' Se lee el nmero hasta que este sea mayor a 0
ReDim vectorElementos(num_Elementos - 1) ' Se redimensiona el vector
For i = 0 To UBound(vectorElementos, 1) Step 1 'Ciclo que recorre desde la posicin 0
hasta la del ndice mayor
' Utiliza la funcin Ubound para obtener el indice mayor
vectorElementos(i) = InputBox("Dame una letra " & i + 1) ' se suma 1 a la 1, para
que la secuencia vaya desde 1 hasta num_Elementos
Next
respuesta = "" ' Inicializar la variable que concatenar los elementos
For i = 0 To vectorElementos.Length - 1 Step 1 'Ciclo que recorre desde la posicin 0
hasta la del ndice mayor
' Utiliza la funcin Length para obtener el nmero de elementos y le resta 1, para
detenerse en el ndice mayor
respuesta = respuesta & vectorElementos(i) 'Concatena cada caracter y lo guarda en
la variable
Next
MsgBox(respuesta)
End Sub
Problema 2.
vector que sean mayor a un nmero que introduce el usuario, y que tambin estar en el
rango de 1 -50.
El programa deber:
Comprobar que todos los nmeros estn en rango. Volver a pedir el nmero hasta que
cumpla dicha condicin.
Almacenar los valores aleatorios.
Imprimir los mayores a un valor solicitado.
Const MAXIMO As Integer = 50 ' Valor mximo
Const MINIMO As Integer = 1 ' Valor mnimo
Dim num_Elementos As Integer ' Variable que almacena el nmero de elementos
Dim mayorA As Integer
Dim vectorNumeros(-1) As Integer 'Declaracin de un vector tipo char
Dim respuesta As String 'almacena los elementos del vector que son mayores a un nmero
indicado por el usuario
Dim respuestaTotal As String 'almacena todos los elementos del vector
Do
num_Elementos = InputBox("Indica el nmero de elementos del vector")
Loop Until num_Elementos >= MINIMO And num_Elementos <= MAXIMO ' Se lee el nmero hasta
que este sea mayor a 0 y menor al MAXIMO
Do
mayorA = InputBox("Nmero mayor A")
Loop While mayorA < MINIMO Or mayorA > MAXIMO ' Se lee el nmero mientras que este sea
menor a 0 y mayor al MAXIMO