Ejercicios propuestos y resueltos matrices de Java

Hola a todos, hoy os dejo una serie de ejercicios de Java para practicar todo aquello que hemos explicado en anteriores posts, haciendo hincapié en los arrays de Java.

Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.

El nombre de la aplicación es de tu elección. Crea un proyecto en Java por ejercicio. Colocare en las soluciones algunos comentarios para que sean más fácilmente entendible.

Te recomiendo que uses mensajes de trazas, donde te sean necesarios. Si tienes problemas también puedes usar el depurador.

Te dejo nuestro curso java para las dudas:

Curso Java

Si tienes alguna duda, recuerda que puedes consultarnos escribiendo un comentario en este post o enviándonos un e-mail a administrador@discoduroderoer.es

1) Crear una matriz de 3×3 con los números del 1 al 9. Mostrar por pantalla, tal como aparece en la matriz.

Spoiler Inside SelectShow


2) Crear una matriz de 5 filas y n columnas (se pide al usuario). Rellenarlo con números aleatorios entre 0 y 10.

Spoiler Inside SelectShow

3) Crear dos matrices de nxn y sumar sus valores, los resultados se deben almacenar en otra matriz. Los valores y la longitud, seran insertados por el usuario. Mostrar las matrices originales y el resultado.

Spoiler Inside SelectShow

4) Nos piden crear una matriz de 4×4 de números enteros que inicialmente esta vacía, nos piden hacer un menú con estas opciones:

  • Rellenar TODA la matriz de números, debes pedírselo al usuario.
  • Suma de una fila que se pedirá al usuario (controlar que elija una correcta)
  • Suma de una columna que se pedirá al usuario (controlar que elija una correcta)
  • Sumar la diagonal principal (ver ejemplo)
  • Sumar la diagonal inversa (ver ejemplo)
  • La media de todos los valores de la matriz

IMPORTANTE: hasta que no se haga la primera opción, el resto de opciones no se deberán de ejecutar, simplemente mostrar un mensaje donde diga que debes rellenar la matriz.

Spoiler Inside SelectShow

5) El youtuber Folagor03 contacta con nosotros para hacer un programa que nos muestre la tabla de tipos de Pokemon (tiene un problema serio con ello).

En la solución os dejo un fichero java con los datos necesarios: la tabla de tipos y los tipos de Pokemon. Es el fichero llamado Constantes,java, copialo a tu Proyecto, si lo quieres hacer de cero.

Los datos que contiene la tabla de tipos es la siguiente:

  • 5: el atacante hace la mitad de daño al oponente (No es muy eficaz)
  • 1: el atacante hace un daño neutro al oponente (No se da información) (en la imagen representa al -)
  • 2: el atacante hace el doble de daño al oponente (Es muy eficaz)
  • 0: el atacante hace un daño nulo al oponente (No afecta)

Las filas de la matriz es el Pokemon que ataca.

Las columnas son el pokemon que recibe el ataque.

Por ejemplo, Fila 4 (Eléctrico) ataca a un pokemon de la Columna 1 (Agua), habrá un 2 porque eléctrico es eficaz contra el agua.

Para mayor comodidad del usuario, al poner los tipos de pokemon, se los mostraremos de esta manera:

  1. ACERO
  2. AGUA
  3. BICHO

….

Así hasta el final. Mirar el vector con los tipos.

Las opciones que le daremos a Folagor03 son:

  • Mostrar debilidades: pedimos un tipo o dos (tenemos que preguntárselo al usuario) y nos mostrara todos los tipos que hacen un daño eficaz (recordar un 2) a este tipo.

Por ejemplo, si Folagor03 elige DEBILIDADES de FUEGO, le deberían aparecer estos tipos:

  • AGUA
  • ROCA
  • TIERRA

Si elige dos tipos de pokemon, por ejemplo FUEGO y TIERRA, habrá que ver esos dos tipos y multiplicar las debilidades y mostrar el multiplicador de daño.

  • AGUA : x4 (2 * 2 = 4, doblemente eficaz)
  • TIERRA : x2 (2 * 1 = 2, la tierra es neutro con la tierra)

Fíjate que no aparece el tipo ROCA, ya que TIERRA tiene resistencia y hace que un ataque sea neutro (0.5 * 2 = 1)

  • Mostrar todas los tipos eficaces: pedimos un solo tipo (un ataque al final solo es de un solo tipo) y mostramos que tipos son débiles contra ellos.

Por ejemplo, si elegimos ACERO, los pokemon a los que hace un “Es muy eficaz” son:

  • HADA
  • HIELO
  • ROCA

 

  • Mostrar toda la información relativa de un tipo: pedimos un tipo y nos mostrara el daño de cada uno. Según el valor poner los siguientes valores:
    • 1 : NEUTRO
    • 0 : NO AFECTA
    • 2 : MUY EFICAZ
    • 5 : NO MUY EFICAZ

Por ejemplo si elegimos AGUA, mostraría algo así:

  • ACERO : NEUTRO
  • AGUA: NO MUY EFICAZ
  • BICHO: NEUTRO

Así con todos los tipos

  • Mostrar eficacia de un tipo a otro: pedimos dos tipos de pokemon, el primero será el atacante y el segundo será el oponente. Simplemente diremos si es eficaz o no, neutro o no le afecta el ataque.

Por ejemplo, si elijo el tipo TIERRA de atacante y VOLADOR de oponente este me deberá mostrar:

  • NO AFECTA

También tiene que pedir si quiere que el tipo del oponente sea de uno o dos tipos.




Spoiler Inside SelectShow

 

6) Generar una matriz de 3×3 con números aleatorios sin repetirse.

Spoiler Inside SelectShow

7) Dada la matriz anterior, realizar la suma de una columna o fila aleatoria
(tanto la elección de la fila o columna, como de elegir si elegir una
columna o fila)

Spoiler Inside SelectShow


8) Nos piden que implementemos el software para una máquina expendedora de golosinas.

Cada golosina tiene un nombre y un precio para ahorrar tiempo, os paso los datos que tendrá a continuación (copiar y pegar):

String[][] nombresGolosinas = {

            {"KitKat", "Chicles de fresa", "Lacasitos", "Palotes"},

            {"Kinder Bueno", "Bolsa variada Haribo", "Chetoos", "Twix"},

            {"Kinder Bueno", "M&M'S", "Papa Delta", "Chicles de menta"},

            {"Lacasitos", "Crunch", "Milkybar", "KitKat"}

 };



double[][] precio = {

  {1.1, 0.8, 1.5, 0.9},

  {1.8, 1, 1.2, 1},

  {1.8, 1.3, 1.2, 0.8},

  {1.5, 1.1, 1.1, 1.1}

};

 

También tendrán una cantidad inicial, que en principio será de 5.

Tendremos un pequeño menú con las siguientes opciones:

  • Pedir golosina: pedirá la posición de la golosina que quiera. Esta máquina tiene golosinas en cada posición, identificados por su fila y columna, que será lo que introduzca el usuario al pedir una golosina, por ejemplo si el usuario teclea 20 significa que está pidiendo la golosina que está en la fila 2 columna 0. Cuando no haya más golosinas se le indicará al usuario. Solo puede pedir una golosina y supondremos que el usuario siempre tiene dinero al elegir. Recuerda de disminuir la cantidad la pedir.
  • Mostrar golosinas: mostrara todas las golosinas disponibles. Mostrará el código que debe introducir el usuario, el nombre y el precio. La cantidad no se mostrará.
  • Rellenar golosinas: esta es una función exclusiva de un técnico por lo que nos pedirá una contraseña, si el usuario escribe “MaquinaExpendedora2017” le pedirá la posición de la golosina y la cantidad.
  • Apagar maquina: sale del programa, antes de salir mostrara las ventas totales durante la ejecución del programa.

El programa debe ser modularizado, es decir, todas las funciones que veas que sean necesarias debes crearlas, así como todas aquellas acciones que veas que se repitan. Piensa que funciones pueden ser.

Las funciones deben ser lo más genéricas posibles.

No se deben utilizar POO para este ejercicio.

Spoiler Inside SelectShow




9) Vamos a realizar el típico juego del 3 en raya, donde habrá dos jugadores que tengan que hacer el 3 en raya, los signos serán el X y el O, cuando haya una posición vacía habrá un –

El tablero de juego, será una matriz de 3×3 de char.

El juego termina cuando uno de los jugadores hace 3 en raya o si no hay más posiciones que poner.

El juego debe pedir las posiciones donde el jugador actual quiera poner su marca, esta debe ser validada y por supuesto que no haya una marca ya puesta.

Realízalo de forma modular, como en el anterior, puedes reutilizar funciones o crear nuevas versiones de ellas.

Spoiler Inside SelectShow

10) Crea dos arrays multidimensionales de 2×3 y rellenalos como quieras (números aleatorios, por teclado o definido al crear el array).

Haz un método que sume los arrays multidimensionales, es decir, la posición 0, 0 del array1 con la posición del array2 y así sucesivamente, este metodo no debe devolver nada, haciendo que deba pasarse el array multidimensional de suma como parámetro. Muestra el contenido de cada array multidimensional.

Spoiler Inside SelectShow

11) Queremos realizar una encuesta a 10 personas, en esta encuesta indicaremos el sexo (1=masculino, 2=femenino), si trabaja (1=si trabaja, 2= no trabaja) y su sueldo (si tiene un trabajo, sino sera un cero) estará entre 600 y 2000 (valor entero). Los valores pueden ser generados aleatoriamente. Calcula y muestra lo siguiente:

  • Porcentaje de hombres (tengan o no trabajo).
  • Porcentaje de mujeres (tengan o no trabajo).
  • Porcentaje de hombres que trabajan.
  • Porcentaje de mujeres que trabajan.
  • El sueldo promedio de las hombres que trabajan.
  • EL sueldo promedio de las mujeres que trabajan.

Usa todos los métodos que veas necesarios, piensa que es aquello que se repite o que puede ser mejor tenerlo por separado.

Spoiler Inside SelectShow

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

¿Te ha gustado y quieres apoyarme? ¡Sé mi patrón!
Etiquetas

One comment

  1. Thank you very much for sharing your knowledge. Your tutorials are awesome.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *