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.

Compartir

10 comentarios

  1. Francisco

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

  2. Hernan Rueda

    2. Se tiene una tabla con las calificaciones obtenidas por un grupo de N estudiantes en 5 exámenes diferentes. Realice un programa en Java, que permita calcular lo siguiente:

    a. El promedio de calificaciones de cada uno de los N estudiantes (considerando los 5 exámenes).
    b. El estudiante o los estudiantes que obtuvieron la mejor calificación en el tercer examen.
    c. El o los estudiantes, si existieran, que obtuvieron la mayor calificación en el primero y en el quinto examen.
    d. ¿En cuál examen fue más alto el promedio de los N estudiantes?

    Te Agradezco si me puedes ayudar

  3. Andrea

    Hola muy buenas.
    Alguien me podria ayudar con este ejercicio?
    Soy nuevo y la verdad que me está volviendo loco este ejercicio.

    Muchas Gracias por vuestra ayuda y espero que me puedan ayudar.

    Solicita al usuario que introduzca 3 nombres y muéstralos por pantalla (deben
    guardarse en un array).

    Crea un array bidimensional (matriz) de enteros de 5 filas y 4 columnas y rellénalo
    con valores a tu elección; después muéstralo por pantalla.

    Nota
    Recuerda importar el paquete java.util.Scanner, para poder utilizar la sentencia
    System.out.println

  4. Bastian

    Hola necesito una ayudaita con esta matriz

    Escriba un programa que ingrese veinte números a una
    matriz, determine cual es el menor y su posición, cual es
    el mayor y su posición, cual es la suma total de los
    elementos, cuantos de estos son pares, cuantos impares,
    cuantos fueron positivos y negativos, cuantos fueron
    multiplos de cinco y de siete, determine la media de
    estos y traspase a otra matriz sus elementos
    multiplicando sus valores por doce.

  5. Gonzalo

    Dada una matriz de m × n enteros ordenada ascendentemente
    entre filas por cantidad de secuencias separadas por ceros,
    insertar una fila cuyo elementos se encuentran en el arreglo
    nuevo de tamaño n manteniendo el orden.

    necesito ayuda solamente para sacar secuencias, como seria el metodo? Gracias

  6. Dona

    Necesito ayuda con este problema dice:
    Desarrolle un programa de java que permita introducir los elementos de dos vectores en una matriz sabiendo que el vector 1 es de tipo enteró y contiene cuatro elementos y el vector 2 es de tipo entero y contiene 3 elementos.

  7. hildebrando

    parce me puede ayudar con un ejercicio
    1. Realice el siguiente ejercicio por consola utilizando vectores: La empresa de transporte ALMOST necesita una aplicación que le permita llevar el registro de los conductores que manejan sus buses y en que horario, además de esto desea saber si el conductor es mayor de 40. Realizar un algoritmo que pida el número de buses de la empresa, Numero del bus, Nombre del conductor que conduce el bus, Edad del conductor y el horario en el que conduce el bus. Los Horarios de los buses son: Horario A: (06:00 a 12:00) Horario B: (12:00 a 18:00) Horario C: (18:00 a 24:00) El programa al final debe de mostrar los siguientes resultados:

    a. Buses en cada horario.
    b. Conductores Mayores de 40 Años.
    c. Conductor, Bus y Horario.

  8. jon

    hola alguien me podría ayudar con este ejercicio,en una matriz 6filasx7 columas haya una ruta de puros unos con un punto inicial y punto final, me piden hacer un algoritmo que marce la ruta que esta echa por unos

  9. Valentina Cifuentes

    2. Llenar aleatoriamente una matriz de tamaño N x M con letras mayúsculas del alfabeto. La matriz
    debe ser declara de tipo char. Tener en cuenta los 27 caracteres del alfabeto.
    Por ejemplo; suponga que N = 4, y M = 3, y que al llenarla de forma aleatoria queda así:
    0 1 3
    0 ‘E’ ‘W’ ‘C’
    1 ‘P’ ‘Ñ’ ‘V’
    2 ‘A’ ‘J’ ‘P’
    3 ‘R’ ‘N’ ‘A’

Deja una respuesta

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