Índice

Índice

Ejercicios Unidad 11

Descargar estos ejercicios

Antes de empezar

Estos ejercicios están pensados para trabajar de forma avanzada el manejo de cadenas y objetos mutables como StringBuilder en C#. Se recomienda revisar los apuntes de la unidad antes de resolverlos. Para realizar estos ejercicios, deberás descargar los recursos del enlace de proyecto_cadenas. Como puedes ver, la solución está compuesta de varios proyectos. Cada uno de ellos corresponde con un ejercicio, deberás implementar todo el código, tanto de la Main como de los métodos que se piden en cada ejercicio. Cada proyecto contiene el test correspondiente, que deberás pasar para comprobar que has hecho el ejercicio correctamente.

Ejercicio 1. Nivel de seguridad de contraseña

Escribe una función que devuelva el nivel de una contraseña teniendo en cuenta que:

Salida por consola:

Introduce una contraseña: 123456
Nivel de seguridad: Muy débil

Introduce una contraseña: abcdabcd
Nivel de seguridad: Débil

Introduce una contraseña: abc12345
Nivel de seguridad: Fuerte

Introduce una contraseña: abc12345!
Nivel de seguridad: Muy fuerte

Requisitos:

Ejercicio 2. Palíndromos

Crea una función que determine si una frase es palíndroma, ignorando espacios, signos de puntuación y mayúsculas. No puedes utilizar el método Reverse para invertir la frase.

Salida por consola:

Introduce una frase: Anita lava la tina
Es palíndroma

Introduce una frase: Hola mundo
No es palíndroma

Requisitos:

Ejercicio 3. Normalizador con reglas personalizadas

Implementa una función que reciba una cadena y la normalice aplicando las siguientes reglas:

Salida por consola:

Introduce una cadena: ¡Árboles y pingüinos!
Normalizada: arbolesypinguinos

Requisitos:

Ejercicio 4. Reescritor en código Tiko extendido

Desarrolla una primera versión de un "traductor al lenguaje Tiko extendido" que transforme una frase de entrada aplicando una serie de reglas básicas. En esta fase solo podrás utilizar clases y métodos de manipulación de cadenas (string y StringBuilder), no se permite el uso de expresiones regulares.

El programa debe realizar las siguientes transformaciones:

  1. Sustitución de números por texto.Sustituye cada dígito numérico (del 0 al 9) por su nombre equivalente en texto (por ejemplo, "2" se convierte en "dos").
  2. Eliminación de letras repetidas consecutivas. Si una misma letra aparece repetida varias veces seguidas, deja solo una. Por ejemplo: "holaaaaaa" se convierte en "hola". Hasta que se pueda hacer una mejora, esto tendrá el problema de que eliminará letras repetidas correctas (Por ejemplo, perro lo convertirá en pero). En futuras ampliaciones esto quedará corregido.
  3. Traducción básica de onomatopeyas. Cambia algunas combinaciones típicas de risa como "jaja", "jeje", "jiji" o "jojo" por emojis sencillos como 😂, 😄, 😆 o 🤣. La sustitución se hará solo si coinciden exactamente esas combinaciones, sin variaciones.Sustituye cada grupo de onomatopeya por un emoji, por ejemplo jaja -> 😂😂

Salida por consola:

Introduce una frase: jaja holaaaa 123
Tiko extendido: 😂 hola uno dos tres

Requisitos:

Ejercicio 5. Juego del ahorcado modular

Desarrolla una versión modular del juego del ahorcado. El programa pedirá al usuario la palabra secreta y el máximo de fallos permitidos. El usuario irá introduciendo letras hasta que acierte la palabra o supere el número de fallos. En cada turno se mostrarán los huecos/aciertos de la palabra y las letras falladas.

Salida por consola:

Introduce la palabra a adivinar: BUCLE
Introduce el número máximo de fallos: 3
Palabra: _ _ _ _ _
Fallos:
Introduce una letra: M
Palabra: _ _ _ _ _
Fallos: M
Introduce una letra: O
Palabra: _ _ _ _ _
Fallos: M O
Introduce una letra: L
Palabra: _ _ _ L _
Fallos: M O
Introduce una letra: T
Palabra: _ _ _ L _
Fallos: M O T
Lo siento has llegado al máximo de fallos permitido.
La palabra a adivinar era: BUCLE.
Palabra: _ _ _ _ _
Fallos:
Introduce una letra: U
Palabra: _ U _ _ _
Fallos:
Introduce una letra: C
Palabra: _ U C _ _
Fallos:
Introduce una letra: B
Palabra: B U C _ _
Fallos:
Introduce una letra: L
Palabra: B U C L _
Fallos:
Introduce una letra: E
Palabra: B U C L E
Fallos:
ENHORABUENA LO HAS CONSEGUIDO

Requisitos:

 public static string PidePalabraAAdivinar()
 public static int PideMaximoFallos()
 public static bool EstaLetraEnLetras(char letra, string letras)
 static char PideLetra(
                        string palabraParcialmenteAdivinada,
                        string letrasFalladas)
 public static void MuestraEstadoJuego(
                        string palabraParcialmenteAdivinada,
                        string letrasFalladas)
 public static voidadeLetraALetrasPalabraAMostrar(
                        string palabraAAdivinar,
                        in char letra,
                        StringBuilder palabraParcialmenteAdivinada)
 public static bool FinDeJuego(
                        int numFallos, int maxFallos,
                        string palabraAAdivinar, string palabraParcialmenteAdivinada,
                        out string mensajeSiFin)
 public static void Jugar(string palabraAAdivinar, int maximoFallos)
        

G main Principal n1 Pedir palabra a adivinar main->n1 n2 Pedir número máximo de fallos main->n2 n3 Jugar main->n3 n31 Muestra estado del juego n3->n31 1... veces n32 Pide letra no repetida n3->n32 1... veces n33 Añade letra a letras de la palabra a mostrar n3->n33 1... veces n34 Añade letra a letras falladas n3->n34 1... veces n35 Comprueba si fin de juego n3->n35 1... veces n321 Está la letra en letras introducidas n32->n321 1... veces n351 Ha acertado ya la palabra n35->n351 n352 Ha llegado al máximo de fallos n35->n352 n3211 Está la letra en letras acertadas n321->n3211 n3212 Está la letra en letras falladas. n321->n3212 n321X Está letra en letras n3211->n321X n3212->n321X