Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1) Piden crear una matriz de 4×4 de números enteros que inicialmente esta vacía, nos piden hacer un menú
con estas opciones:
import java.util.Scanner;
public class ejercicio1 {
public static void main(String[] args) {
Matriz matriz = new Matriz(4, 4);
Scanner scanner = new Scanner(System.in);
int opcion = -1;
while (opcion != 0) {
Menu.mostrarMenu();
System.out.print("Ingrese una opción: ");
opcion = scanner.nextInt();
switch (opcion) {
case 1:
matriz.rellenarMatriz(scanner);
break;
case 2:
matriz.sumarFila(scanner);
break;
case 3:
matriz.sumarColumna(scanner);
break;
case 4:
matriz.sumarDiagonalPrincipal();
break;
case 5:
matriz.sumarDiagonalInversa();
break;
case 6:
matriz.calcularMedia();
break;
case 0:
System.out.println("Adiós");
break;
default:
System.out.println("Opción inválida");
break;
}
}
}
}
class Matriz {
private int[][] matriz;
private boolean matrizLlena;
2) 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):
1
2 String[][] nombresGolosinas = {
3
4 {"KitKat", "Chicles de fresa", "Lacasitos", "Palotes"},
5
{"Kinder Bueno", "Bolsa variada Haribo", "Chetoos", "Twix"},
6
7 {"Kinder Bueno", "M&M'S", "Papa Delta", "Chicles de menta"},
8
9 {"Lacasitos", "Crunch", "Milkybar", "KitKat"}
10
11 };
12
13
14
15 double[][] precio = {
16
{1.1, 0.8, 1.5, 0.9},
17
18
{1.8, 1, 1.2, 1},
19
20 {1.8, 1.3, 1.2, 0.8},
21
22 {1.5, 1.1, 1.1, 1.1}
23
24 };
25
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.
import java.util.Scanner;
public class ejercicio2 {
static 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"}
};
static double[][] precios = {
{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}
};
static int[][] cantidadGolosinas = new int[4][4];
static double ventasTotales = 0;
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
inicializarCantidadGolosinas(5);
mostrarMenu();
}
public static void inicializarCantidadGolosinas(int cantidadInicial) {
for (int i = 0; i < cantidadGolosinas.length; i++) {
for (int j = 0; j < cantidadGolosinas[i].length; j++) {
cantidadGolosinas[i][j] = cantidadInicial;
}
}
}
public static void mostrarMenu() {
boolean apagado = false;
while (!apagado) {
System.out.println("----- MÁQUINA EXPENDEDORA DE GOLOSINAS -----");
System.out.println("1. Pedir golosina");
System.out.println("2. Mostrar golosinas");
System.out.println("3. Rellenar golosinas");
System.out.println("4. Apagar máquina");
System.out.println("---------------------------------------------");
System.out.print("Ingrese una opción: ");
int opcion = scanner.nextInt();
System.out.println();
switch (opcion) {
case 1:
pedirGolosina();
break;
case 2:
mostrarGolosinas();
break;
case 3:
rellenarGolosinas();
break;
case 4:
apagarMaquina();
apagado = true;
break;
default:
System.out.println("Opción inválida. Intente nuevamente.");
break;
}
System.out.println();
}
}
public static void pedirGolosina() {
System.out.print("Ingrese la posición de la golosina que desea (del 1 al 16): ");
int posicion = scanner.nextInt();
if (fila >= 0 && fila < nombresGolosinas.length && columna >= 0 && columna < nombresGolosinas[fila].length) {
if (cantidadGolosinas[fila][columna] > 0) {
double precio = precios[fila][columna];
System.out.println("¡Disfruta tu golosina " + nombresGolosinas[fila][columna] + " por $" + precio + "!");
ventasTotales += precio;
cantidadGolosinas[fila][columna]--;
} else {
System.out.println("Lo sentimos, no hay más golosinas disponibles en esa posición.");
}
} else {
System.out.println("Posición inválida. Intente nuevamente.");
}
}
public static void mostrarGolosinas() {
System.out.println("----- LISTA DE GOLOSINAS DISPONIBLES -----");
int posicion = 1;
for (int i = 0; i < nombresGolosinas.length; i++) {
for (int j = 0; j < nombresGolosinas[i].length; j++) {
System.out.println(posicion + ". Golosina: " + nombresGolosinas[i][j] + " | Precio: $" + precios[i][j]);
posicion++;
}
}
}
public static void rellenarGolosinas() {
System.out.print("Ingrese la contraseña: ");
String contraseña = scanner.next();
if (contraseña.equals("MaquinaExpendedora2017")) {
System.out.print("Ingrese la posición de la golosina a rellenar (del 1 al 16): ");
int posicion = scanner.nextInt();
if (fila >= 0 && fila < nombresGolosinas.length && columna >= 0 && columna < nombresGolosinas[fila].length)
{
System.out.print("Ingrese la cantidad de golosinas a rellenar: ");
int cantidad = scanner.nextInt();
cantidadGolosinas[fila][columna] += cantidad;
System.out.println("Golosinas rellenadas correctamente.");
} else {
System.out.println("Posición inválida. Intente nuevamente.");
}
} else {
System.out.println("Contraseña incorrecta. Acceso denegado.");
}
}
public static void apagarMaquina() {
System.out.println("----- APAGANDO MÁQUINA EXPENDEDORA -----");
System.out.printf("Ventas totales: $%.2f%n", ventasTotales);
System.out.println("¡Hasta luego!");
}
}
3) 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:
if (trabajos[i] == 1) {
System.out.print("Sueldo (" + SUELDO_MIN + " - " + SUELDO_MAX + "): ");
sueldos[i] = scanner.nextInt();
while (sueldos[i] < SUELDO_MIN || sueldos[i] > SUELDO_MAX) {
System.out.println("Sueldo fuera de rango. Intente nuevamente.");
System.out.print("Sueldo (" + SUELDO_MIN + " - " + SUELDO_MAX + "): ");
sueldos[i] = scanner.nextInt();
}
} else {
sueldos[i] = 0;
}
System.out.println();
}
}
public static void calcularPorcentajes() {
int totalHombres = 0;
int totalMujeres = 0;
int hombresTrabajan = 0;
int mujeresTrabajan = 0;
Por ejemplo, Fila 4 (Eléctrico) ataca a un pokemon de la Columna 1 (Agua), habrá un 2 por
Para mayor comodidad del usuario, al poner los tipos de pokemon, se los mostraremos de esta manera:
1. ACERO
2. AGUA
3. BICHO
….
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.
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:
o 1 : NEUTRO
o 0 : NO AFECTA
o 2 : MUY EFICAZ
o 5 : NO MUY EFICAZ
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.
import java.util.Scanner;
public class ejercicio4 {
private static final String[] TIPOS = {
"NORMAL", "LUCHA", "VOLADOR", "VENENO", "TIERRA",
"ROCA", "BICHO", "FANTASMA", "ACERO", "FUEGO",
"AGUA", "PLANTA", "ELÉCTRICO", "PSÍQUICO", "HIELO",
"DRAGÓN", "SINIESTRO", "HADA"
};
private static final double[][] TABLA_TIPOS = {
{1, 1, 1, 1, 1, 1, 1, 0, 0.5, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // NORMAL
{2, 1, 0.5, 0.5, 1, 2, 0.5, 0, 2, 1, 1, 1, 1, 0.5, 2, 1, 2, 0.5}, // LUCHA
{1, 2, 1, 1, 1, 0.5, 2, 1, 0.5, 1, 1, 2, 0.5, 1, 1, 1, 1, 1}, // VOLADOR
{1, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0, 1, 1, 2, 1, 1, 1, 1, 1, 2}, // VENENO
{1, 1, 0, 2, 1, 0.5, 1, 1, 2, 2, 1, 0.5, 2, 1, 1, 1, 1, 1}, // TIERRA
{1, 0.5, 2, 1, 2, 1, 0.5, 1, 0.5, 2, 1, 1, 1, 1, 2, 1, 1, 1}, // ROCA
{1, 0.5, 0.5, 0.5, 1, 2, 1, 0.5, 0.5, 0.5, 1, 2, 1, 2, 1, 1, 2, 0.5}, // BICHO
{0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 0.5, 1}, // FANTASMA
{1, 1, 1, 1, 1, 2, 1, 1, 0.5, 0.5, 0.5, 1, 0.5, 1, 2, 1, 1, 2}, // ACERO
{1, 1, 1, 1, 1, 0.5, 2, 1, 2, 0.5, 0.5, 2, 1, 1, 2, 0.5, 1, 1}, // FUEGO
{1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 0.5, 0.5, 1, 1, 1, 0.5, 1, 1}, // AGUA
{1, 1, 0.5, 0.5, 2, 2, 0.5, 1, 0.5, 0.5, 2, 0.5, 1, 1, 1, 0.5, 1, 1}, // PLANTA
{1, 1, 2, 1, 0.5, 1, 1, 1, 1, 1, 0.5, 2, 0.5, 1, 1, 0.5, 1, 1}, // ELÉCTRICO
{1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, 0, 1}, // PSÍQUICO
{1, 1, 2, 1, 2, 1, 1, 1, 0.5, 0.5, 0.5, 2, 1, 1, 0.5, 2, 1, 1}, // HIELO
{1, 2, 1, 1, 1, 1, 1, 1, 0.5, 1, 1, 1, 1, 1, 1, 2, 1, 0}, // DRAGÓN
{1, 0.5, 1, 1, 1, 1, 1, 0.5, 1, 2, 1, 1, 1, 2, 1, 1, 0.5, 0.5}, // SINIESTRO
{1, 2, 1, 0.5, 1, 1, 1, 1, 0.5, 1, 1, 1, 1, 1, 1, 2, 2, 1} // HADA
};
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int opcion;
do {
mostrarMenu();
opcion = scanner.nextInt();
switch (opcion) {
case 1:
mostrarDebilidades(scanner);
break;
case 2:
mostrarTiposEficaces(scanner);
break;
case 3:
mostrarInformacionTipo(scanner);
break;
case 4:
mostrarEficaciaMovimiento(scanner);
break;
case 5:
System.out.println("¡Hasta luego!");
break;
default:
System.out.println("Opción inválida. Por favor, seleccione una opción válida.");
break;
}
System.out.println();
} while (opcion != 5);
scanner.close();
}
private static void mostrarMenu() {
System.out.println("***** Verificador de tipos de Pokemon *****");
System.out.println("1. Mostrar debilidades de un tipo de Pokemon");
System.out.println("2. Mostrar tipos eficaces contra un tipo de movimiento");
System.out.println("3. Mostrar información de un tipo de Pokemon");
System.out.println("4. Mostrar eficacia de un tipo de movimiento contra un tipo de Pokemon");
System.out.println("5. Salir");
System.out.println("********************************");
System.out.println("Ingrese el número de la opción deseada:");
}
private static void mostrarDebilidades(Scanner scanner) {
System.out.println("Ingrese el tipo de Pokemon para mostrar sus debilidades:");
String tipo = scanner.next().toUpperCase();