Sigo resolviendo ejercicios de programación en Gambas. Como en la entrada anterior sigo con los ejercicios que propone Pythondiario. Ahora son un poco mas complicados, pero muy útiles para aprender.
Ejercicio 1
La función max() del ejercicio 1 (primera parte) y la función
max_de_tres() del ejercicio 2 (primera parte), solo van a funcionar para
2 o 3 números. Supongamos que tenemos mas de 3 números o no sabemos
cuantos números son. Escribir una función max_in_list() que tome una
lista de números y devuelva el mas grande. Aquí supongo que el autor querría que nos estrujáramos mas la cabeza, pero yo he tirado por la sencillez, lo que hace mi función es ordenar el array de mayor a menor y devuelve el primer valor que es el mayor.
Private Sub maxArray ( lista As Integer [ ] ) As Integer
lista.Sort ( gb.Descent )
Return lista [ 0 ]
End
lista.Sort ( gb.Descent )
Return lista [ 0 ]
End
Ejercicio 2
Escribir una función mas_larga() que tome una lista de palabras y devuelva la mas larga.
Private Function masLarga ( lista As String [ ] ) As String
Dim larga As String
larga = lista [ 0 ]
For Each a As String In lista
If larga < a Then
larga = a
Endif
Next
Return larga
End Ejercicio 5
Construir un pequeño programa que convierta números binarios en enteros.
Dim larga As String
larga = lista [ 0 ]
For Each a As String In lista
If larga < a Then
larga = a
Endif
Next
Return larga
End
Ejercicio 3
Escribir una función filtrar_palabras() que tome una lista de palabras y un entero n, y devuelva las palabras que tengan mas de n caracteres.
Escribir una función filtrar_palabras() que tome una lista de palabras y un entero n, y devuelva las palabras que tengan mas de n caracteres.
Private Function filtrarPalabras ( lista As String [ ] , numero As Integer ) As String [ ]
Dim devolver As New String [ ]
For Each a As String In lista
If String .Len ( a ) > numero Then
devolver.Add ( a )
Endif
Next
Return devolver
End
Dim devolver As New String [ ]
For Each a As String In lista
If String .Len ( a ) > numero Then
devolver.Add ( a )
Endif
Next
Return devolver
End
Ejercicio 4
Escribir un programa que le diga al usuario que ingrese una cadena. El programa tiene que evaluar la cadena y decir cuantas letras mayúsculas tiene.
Escribir un programa que le diga al usuario que ingrese una cadena. El programa tiene que evaluar la cadena y decir cuantas letras mayúsculas tiene.
Public Sub Main ( )
Dim entrada, b As String
Dim contador As Integer
Print "Ingresa una cadena:"
Input entrada
For a As Integer = 1 To Len ( entrada )
b = Mid ( entrada, a, 1 )
If b <> LCase ( b ) Then
Inc contador
Endif
Next
Print Subst ( "Tu cadena &1 tiene &2 mayúsculas." , entrada, contador )
End
Dim entrada, b As String
Dim contador As Integer
Print "Ingresa una cadena:"
Input entrada
For a As Integer = 1 To Len ( entrada )
b = Mid ( entrada, a, 1 )
If b <> LCase ( b ) Then
Inc contador
Endif
Next
Print Subst ( "Tu cadena &1 tiene &2 mayúsculas." , entrada, contador )
End
Construir un pequeño programa que convierta números binarios en enteros.
Public Sub Main ( )
Dim entrada, b As String
Dim decimal , exp As Integer
Print "Ingresa un número binario:"
Input entrada
exp = Len ( entrada ) - 1
For i As Integer = 1 To exp + 1
decimal += ( CInt ( Mid ( entrada, i, 1 ) ) * 2 ^ exp )
Dec exp
Next
Print "Número en decimal: " & decimal
End
Dim entrada, b As String
Dim decimal , exp As Integer
Print "Ingresa un número binario:"
Input entrada
exp = Len ( entrada ) - 1
For i As Integer = 1 To exp + 1
decimal += ( CInt ( Mid ( entrada, i, 1 ) ) * 2 ^ exp )
Dec exp
Next
Print "Número en decimal: " & decimal
End
Ejercicio 6
Escribir un pequeño programa donde:
- Se ingresa el año en curso. (No he añadido esto, he preferido que el programa use la fecha del ordenador)
- Se ingresa el nombre y el año de nacimiento de tres personas.
- Se calcula cuántos años cumplirán durante el año en curso.
- Se imprime en pantalla.
Escribir un pequeño programa donde:
- Se ingresa el año en curso. (No he añadido esto, he preferido que el programa use la fecha del ordenador)
- Se ingresa el nombre y el año de nacimiento de tres personas.
- Se calcula cuántos años cumplirán durante el año en curso.
- Se imprime en pantalla.
Public Sub Main ( )
Dim nombre As New String [ 3 ]
Dim anno As New Integer [ 3 ]
Dim contador As Integer
Dim entrada As String
For a As Integer = 0 To 2
Print Subst ( "Introduce el nombre de la persona &1: " , a + 1 )
Input nombre [ a ]
Print Subst ( "Introduce su año de nacimiento: " )
Input entrada
anno [ a ] = CInt ( entrada )
Next
For a As Integer = 0 To 2
If Year ( Now ) = anno [ a ] Then
Print Subst ( "Este año cumple &1" , nombre [ a ] )
Endif
Next
End
Dim nombre As New String [ 3 ]
Dim anno As New Integer [ 3 ]
Dim contador As Integer
Dim entrada As String
For a As Integer = 0 To 2
Print Subst ( "Introduce el nombre de la persona &1: " , a + 1 )
Input nombre [ a ]
Print Subst ( "Introduce su año de nacimiento: " )
Input entrada
anno [ a ] = CInt ( entrada )
Next
For a As Integer = 0 To 2
If Year ( Now ) = anno [ a ] Then
Print Subst ( "Este año cumple &1" , nombre [ a ] )
Endif
Next
End
Ejercicio 7
Definir una tupla con 10 edades de personas (En Gambas no existe las tuplas, en este caso voy a declarar un array)
Imprimir la cantidad de personas con edades superiores a 20.
Puedes variar el ejercicio para que sea el usuario quien ingrese las edades.
Definir una tupla con 10 edades de personas (En Gambas no existe las tuplas, en este caso voy a declarar un array)
Imprimir la cantidad de personas con edades superiores a 20.
Puedes variar el ejercicio para que sea el usuario quien ingrese las edades.
Public Sub Main ( )
Dim edad As New Integer [ 10 ]
Dim entrada As String
Dim contador As Integer
For a As Integer = 0 To 9
Print Subst ( "Introduce la edad de la persona &1: " , a + 1 )
Input entrada
edad [ a ] = CInt ( entrada )
Next
For Each a As Integer In edad
If a > 20 Then Inc contador
Next
Print Subst ( "Las personas mayores de 20 años son: &1" , contador )
End
Dim edad As New Integer [ 10 ]
Dim entrada As String
Dim contador As Integer
For a As Integer = 0 To 9
Print Subst ( "Introduce la edad de la persona &1: " , a + 1 )
Input entrada
edad [ a ] = CInt ( entrada )
Next
For Each a As Integer In edad
If a > 20 Then Inc contador
Next
Print Subst ( "Las personas mayores de 20 años son: &1" , contador )
End
Ejercicio 8
Definir una lista con un conjunto de nombres, imprimir la cantidad de comienzan con la letra a.
También se puede hacer elegir al usuario la letra a buscar. (Un poco mas emocionante)
Definir una lista con un conjunto de nombres, imprimir la cantidad de comienzan con la letra a.
También se puede hacer elegir al usuario la letra a buscar. (Un poco mas emocionante)
Public Sub Main ( )
Dim palabras As String [ ] = [ "Gambas" , "es" , "muy" , "sencillo" ]
Dim entrada As String
Print "Introduce la letra a buscar: "
Input entrada
For Each a As String In palabras
If Mid ( a, 1 , 1 ) == entrada Then 'Cuando se compara dos strings y se usa el doble igual,
'significa que se hace la comparación sin tener en cuenta si es mayúscula o minúsculas.
Print Subst ( "&1 comienza por la letra &2" , a, entrada )
Endif
Next
End
Dim palabras As String [ ] = [ "Gambas" , "es" , "muy" , "sencillo" ]
Dim entrada As String
Print "Introduce la letra a buscar: "
Input entrada
For Each a As String In palabras
If Mid ( a, 1 , 1 ) == entrada Then 'Cuando se compara dos strings y se usa el doble igual,
'significa que se hace la comparación sin tener en cuenta si es mayúscula o minúsculas.
Print Subst ( "&1 comienza por la letra &2" , a, entrada )
Endif
Next
End
Ejercicio 9
Crear una función contar_vocales(), que reciba una palabra y cuente cuantas letras "a" tiene, cuantas letras "e" tiene y así hasta completar todas las vocales.
Se puede hacer que el usuario sea quien elija la palabra.
Crear una función contar_vocales(), que reciba una palabra y cuente cuantas letras "a" tiene, cuantas letras "e" tiene y así hasta completar todas las vocales.
Se puede hacer que el usuario sea quien elija la palabra.
Private Sub contarVocales ( palabra As String )
Dim letras As String [ ] = [ "a" , "e" , "i" , "o" , "u" ]
Dim cantidad As New Integer [ 5 ]
For a As Integer = 1 To Len ( palabra )
Select Case Mid ( palabra, a, 1 )
Case "a"
Inc cantidad [ 0 ]
Case "e"
Inc cantidad [ 1 ]
Case "i"
Inc cantidad [ 2 ]
Case "o"
Inc cantidad [ 3 ]
Case "u"
Inc cantidad [ 4 ]
End Select
Next
Print Subst ( "La palabra &1 contiene..." , palabra )
For a As Integer = 0 To 4
Print Subst ( "Letra &1: &2" , letras [ a ] , cantidad [ a ] )
Next
End
Dim letras As String [ ] = [ "a" , "e" , "i" , "o" , "u" ]
Dim cantidad As New Integer [ 5 ]
For a As Integer = 1 To Len ( palabra )
Select Case Mid ( palabra, a, 1 )
Case "a"
Inc cantidad [ 0 ]
Case "e"
Inc cantidad [ 1 ]
Case "i"
Inc cantidad [ 2 ]
Case "o"
Inc cantidad [ 3 ]
Case "u"
Inc cantidad [ 4 ]
End Select
Next
Print Subst ( "La palabra &1 contiene..." , palabra )
For a As Integer = 0 To 4
Print Subst ( "Letra &1: &2" , letras [ a ] , cantidad [ a ] )
Next
End
Ejercicio 10
Escriba una función es_bisiesto() que determine si un año determinado es un año bisiesto.Un año bisiesto es divisible por 4, pero no por 100. También es divisible por 400
Escriba una función es_bisiesto() que determine si un año determinado es un año bisiesto.Un año bisiesto es divisible por 4, pero no por 100. También es divisible por 400
Private Function esBisiesto ( anio As Integer ) As Boolean
Dim bisiesto as Boolean
Dim bisiesto as Boolean
If ( ( anio Mod 4 = 0 ) And ( anio Mod 100 <> 0 ) ) Or ( anio Mod 400 = 0 ) Then
bisiesto = True 'Es bisiesto
Else
bisiesto = False 'No es bisiesto
Endif
End
No hay comentarios:
Publicar un comentario