Ejercicios Resueltos de Programación en Java: Arreglos, Métodos y Estructuras de Control

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

  1. Solicite por teclado un número entre -52 y 81. Valide el ingreso. Muestre por pantalla el número.
  2. Cree un arreglo bidimensional de 8 filas y 7 columnas con números aleatorios entre -50 y 90.
  3. Llame a un método que envíe como parámetro el arreglo bidimensional (BI) y el número dado por teclado.
  4. 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.
  5. En el bloque main(), debe visualizar, a través de un mensaje, el significado del dato retornado del método.
  6. Coloque todos los elementos del arreglo BI en un arreglo unidimensional (UNI).
  7. 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);
    }
}

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.