Ejercicios de Programación en Java: Arreglos, Métodos y Estructuras de Control
Ejercicio 1: Búsqueda en Arreglo Bidimensional y Conversión a Unidimensional
Este ejercicio aborda los siguientes conceptos:
- Validación de entrada de datos.
- Creación y manipulación de arreglos bidimensionales.
- Generación de números aleatorios.
- Implementación de métodos con parámetros.
- Búsqueda de un elemento en un arreglo bidimensional.
- Conversión de un arreglo bidimensional a uno unidimensional.
Enunciado
- Solicite por teclado un número entre -52 y 81. Valide el ingreso. Muestre por pantalla el número.
- Cree un arreglo bidimensional de 8 filas y 7 columnas con números aleatorios entre -50 y 90.
- Llame a un método que envíe como parámetro el arreglo bidimensional (BI) y el número dado por teclado.
- El método debe buscar el parámetro recibido, correspondiente al número ingresado por teclado, en el arreglo bidimensional. Si este se encuentra, retorne un 0; de lo contrario, retorne 1.
- En el bloque
main()
, debe visualizar, a través de un mensaje, el significado del dato retornado del método. - Coloque todos los elementos del arreglo BI en un arreglo unidimensional (UNI).
- Visualice el arreglo UNI.
Solución
import java.io.*;
public class ArregloMetodoBI_Control4 {
public static void main(String args[]) throws Exception {
int a, x;
BufferedReader dato = new BufferedReader(new InputStreamReader(System.in));
do {
System.out.print("\nIngrese un número entre -52 y 81: ");
a = Integer.parseInt(dato.readLine());
} while (a < -52 || a > 81);
int[][] Tabla = new int[8][7];
int f, c;
System.out.print("\nArreglo Bidimensional de 8 filas y 7 columnas\n\n");
for (f = 0; f < 8; f++) {
System.out.print("\n");
for (c = 0; c < 7; c++) {
Tabla[f][c] = (int) (Math.random() * 141) - 50;
System.out.print("\t" + Tabla[f][c]);
}
}
x = metodo1(Tabla, a);
if (x == 0) {
System.out.print("\n\nEl número " + a + " se encuentra en el arreglo BI");
} else {
System.out.print("\n\nEl número " + a + " NO se encuentra en el arreglo BI");
}
int[] Lista = new int[56];
int k = 0;
for (f = 0; f < 8; f++) {
for (c = 0; c < 7; c++) {
Lista[k] = Tabla[f][c];
k++;
}
}
int i;
System.out.print("\n\nArreglo Unidimensional con los 56 elementos del arreglo Bidimensional\n\n");
for (i = 0; i < 56; i++) {
System.out.print("\t" + Lista[i]);
}
}
public static int metodo1(int[][] Tabla, int a) {
int f, c, esta = 2;
for (f = 0; f < 8; f++) {
for (c = 0; c < 7; c++) {
if (Tabla[f][c] == a) {
esta = 0;
}
}
}
return esta == 0 ? 0 : 1;
}
}
Ejercicio 2: Generación de Números Aleatorios y Verificación de Divisores
Este ejercicio se centra en:
- Validación de entrada.
- Implementación de métodos con diferentes lógicas.
- Generación de números aleatorios dentro de un rango específico.
- Cálculo de divisores.
Enunciado
Escriba una implementación en Java aplicando métodos. Se solicitan por teclado dos números, N1 y N2, entre 45 y 95. Debe validar el ingreso.
- Si N1 es mayor o igual a N2, llame a un método y envíe como parámetro las variables N1 y N2. El método debe generar dos números aleatorios hasta que se generen los números dados por el usuario. Debe imprimir cada intento. Debe retornar la cantidad de intentos hasta que acertó.
- En el bloque
main()
, imprima el valor retornado con un mensaje. - Si N1 es menor a N2, llame a otro método y envíe los números N1 y N2. El método debe generar un número aleatorio y verificar si este es un divisor de N1 y/o N2. Imprima un mensaje.
- Debe retornar el divisor; de lo contrario, envíe un 0.
- En el bloque
main()
, imprima el valor retornado con un mensaje.
Solución
import java.io.*;
public class MetodoAleatorio {
public static void main(String args[]) throws Exception {
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
int n1, n2, intentos, dd;
do {
System.out.print("\nIngrese número 1 entre 45 y 95: ");
n1 = Integer.parseInt(entrada.readLine());
} while (n1 < 45 || n1 > 95);
do {
System.out.print("\nIngrese número 2 entre 45 y 95: ");
n2 = Integer.parseInt(entrada.readLine());
} while (n2 < 45 || n2 > 95);
if (n1 >= n2) {
intentos = aleatorio(n1, n2);
System.out.print("\nCantidad de Intentos: " + intentos);
} else {
dd = divisor(n1, n2);
if (dd == 0) {
System.out.print("\nNo hay divisor entre los números");
} else {
System.out.print("\nSe encontró el divisor para los números: " + dd);
}
}
}
public static int aleatorio(int n1, int n2) {
int cont = 0, a1 = 0, a2 = 0;
do {
a1 = (int) (Math.random() * 51 + 45);
a2 = (int) (Math.random() * 51 + 45);
System.out.print("\nNúmeros Generados: " + a1 + " " + a2);
cont++;
} while (a1 != n1 || a2 != n2);
return cont;
}
public static int divisor(int n1, int n2) {
int numAleatorio = (int) (Math.random() * 100);
System.out.println("\nNúmero aleatorio generado: " + numAleatorio);
if (n1 % numAleatorio == 0 || n2 % numAleatorio == 0) {
return numAleatorio;
}
return 0;
}
}
Ejercicio 3: Cálculo del Área de un Rectángulo a Partir de Coordenadas
Este ejercicio se enfoca en:
- Cálculo de la distancia entre dos puntos.
- Cálculo del área de un rectángulo.
- Uso de coordenadas para definir un rectángulo.
Enunciado
Implemente en Java una solución para calcular el área de un rectángulo a partir de las coordenadas de tres de sus vértices.
Solución
import java.io.*;
public class CalculoRectangulo {
public static void main(String args[]) throws Exception {
BufferedReader dato = new BufferedReader(new InputStreamReader(System.in));
int x1, y1, x2, y2, x3, y3;
double lado1, lado2, areaR;
System.out.print("Ingreso de las coordenadas del rectángulo\n");
System.out.print("Punto 1\n");
System.out.print("\tCoordenada x: ");
x1 = Integer.parseInt(dato.readLine());
System.out.print("\tCoordenada y: ");
y1 = Integer.parseInt(dato.readLine());
System.out.print("Punto 2\n");
System.out.print("\tCoordenada x: ");
x2 = Integer.parseInt(dato.readLine());
System.out.print("\tCoordenada y: ");
y2 = Integer.parseInt(dato.readLine());
System.out.print("Punto 3\n");
System.out.print("\tCoordenada x: ");
x3 = Integer.parseInt(dato.readLine());
System.out.print("\tCoordenada y: ");
y3 = Integer.parseInt(dato.readLine());
lado1 = distancia(x1, y1, x2, y2);
System.out.print("\nLa distancia entre los puntos p1 y p2 es: " + lado1);
lado2 = distancia(x2, y2, x3, y3);
System.out.print("\nLa distancia entre los puntos p2 y p3 es: " + lado2);
areaR = (lado1 * lado2);
System.out.print("\nEl área del rectángulo con lados " + lado1 + " y " + lado2 + " es: " + areaR);
}
public static double distancia(int x1, int y1, int x2, int y2) {
double d;
d = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
return d;
}
}
Ejercicio 4: Números Pares y Promedio en un Intervalo
Este ejercicio trata sobre:
- Validación de entrada de datos.
- Identificación de números pares dentro de un intervalo.
- Cálculo del promedio de números en un intervalo.
Enunciado
Escriba una implementación en Java aplicando métodos. Se solicitan por teclado dos números, N1 y N2, entre 200 y 1000. Debe validar el ingreso.
- Si N1 es menor a N2, llame a un método y envíe como parámetro las variables N1 y N2. El método debe imprimir los pares que hay entre N1 y N2. Si no hay pares, imprima “No existen pares en el intervalo”.
- Si N1 es mayor a N2, llame a otro método y envíe los números N1 y N2. Calcule el promedio entre todos los números del intervalo e imprima el resultado.
Solución
import java.io.*;
public class Eje3 {
public static void main(String[] args) throws IOException {
BufferedReader dato = new BufferedReader(new InputStreamReader(System.in));
int n1, n2;
do {
System.out.print("\nIngrese número 1 entre 200 y 1000: ");
n1 = Integer.parseInt(dato.readLine());
} while (n1 < 200 || n1 > 1000);
do {
System.out.print("\nIngrese número 2 entre 200 y 1000: ");
n2 = Integer.parseInt(dato.readLine());
} while (n2 < 200 || n2 > 1000);
if (n1 < n2) {
metodo1(n1, n2);
}
if (n1 > n2) {
metodo2(n1, n2);
}
}
public static void metodo1(int n1, int n2) {
int i, j = 0;
for (i = n1; i <= n2; i++) {
if (i % 2 == 0) {
System.out.print("\nPar: " + i);
j++;
}
}
if (j == 0) {
System.out.print("\nNo existen pares en el intervalo");
}
}
public static void metodo2(int n1, int n2) {
int i, j = 0, acu = 0;
double prom;
for (i = n2; i <= n1; i++) {
acu = acu + i;
j++;
}
prom = (double) acu / j;
System.out.print("\nEl promedio entre todos los números del intervalo es: " + prom);
}
}