Ejercicios prácticos con arreglos en Java: vectores, desplazamientos y operaciones comunes

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 228,88 KB

Arreglo de números pares (2 a 12)

Objetivo: Cargar un arreglo con 6 elementos que contenga los números pares del 2 al 12 e imprimirlos verticalmente.

Clase

package paquete;

public class ArregloPares {
    private int[] pares = {2, 4, 6, 8, 10, 12};

    public int mostrarElemento(int i) {
        return pares[i];
    }
}

Main

import paquete.ArregloPares;

class Main {
    public static void main(String[] args) {
        ArregloPares obj = new ArregloPares();

        System.out.println("Elementos del arreglo:");
        for (int i = 0; i < 6; i++) {
            System.out.println(obj.mostrarElemento(i));
        }
    }
}

Vector de 10 elementos: impresión y suma

Objetivo: Cargar un vector con 10 elementos, imprimir el vector y calcular la suma de sus elementos.

Clase

package paquete;

public class Vector10 {
    private int[] v = new int[10];

    // Constructor: carga el vector con valores (1 al 10 como ejemplo)
    public Vector10() {
        for (int i = 0; i < 10; i++) {
            v[i] = i + 1; // Puedes cambiar estos valores si quieres
        }
    }

    // Retorna elemento i
    public int mostrarElemento(int i) {
        return v[i];
    }

    // Suma todos los elementos
    public int sumarElementos() {
        int suma = 0;
        for (int i = 0; i < 10; i++) {
            suma += v[i];
        }
        return suma;
    }
}

Main

import paquete.Vector10;

class Main {
    public static void main(String[] args) {
        Vector10 obj = new Vector10();

        System.out.println("Elementos del vector:");
        for (int i = 0; i < 10; i++) {
            System.out.println("v[" + i + "] = " + obj.mostrarElemento(i));
        }

        System.out.println("\nLa suma de los elementos es: " + obj.sumarElementos());
    }
}

Vectores de cadenas: copia inversa y cadena más larga

Objetivo: Crear un vector de 5 elementos de cadenas de caracteres, copiar los elementos del vector en otro vector en orden inverso, imprimir la cadena más larga y finalmente mostrar ambos vectores uno al lado del otro.

Clase

package paquete;

public class VectorCadenas {
    private String[] cadenas = {"Hola", "Programación", "Java", "Arreglo", "Ejemplo"};
    private String[] inverso = new String[5];

    // Constructor: copia en orden inverso
    public VectorCadenas() {
        for (int i = 0; i < 5; i++) {
            inverso[i] = cadenas[4 - i];
        }
    }

    // Retorna un elemento del vector original
    public String getCadena(int i) {
        return cadenas[i];
    }

    // Retorna un elemento del vector inverso
    public String getCadenaInversa(int i) {
        return inverso[i];
    }

    // Buscar la cadena más larga
    public String cadenaMasLarga() {
        String mayor = cadenas[0];
        for (int i = 1; i < 5; i++) {
            if (cadenas[i].length() > mayor.length()) {
                mayor = cadenas[i];
            }
        }
        return mayor;
    }
}

Main

import paquete.VectorCadenas;

class Main {
    public static void main(String[] args) {
        VectorCadenas obj = new VectorCadenas();

        System.out.println("Vector original    |    Vector inverso");
        System.out.println("-----------------------------------------");
        for (int i = 0; i < 5; i++) {
            System.out.println(obj.getCadena(i) + "    |    " + obj.getCadenaInversa(i));
        }

        System.out.println("\nLa cadena más larga es: " + obj.cadenaMasLarga());
    }
}

Promedios pluviales por región (Meteorología)

Contexto: En el centro meteorológico ubicado en Baja California Sur, México, se registran los promedios totales pluviales de las principales regiones del país: Norte, Centro y Sur. Escriba un programa Java que obtenga:

  • El promedio general de las tres regiones.
  • La región con mayor promedio total.

Clase

package paquete;

public class Meteorologia {
    // Promedios pluviales por región (ejemplo)
    private float[] regiones = {120.5f, 98.3f, 150.7f};
    // Índices: 0 = Norte, 1 = Centro, 2 = Sur

    // Obtener promedio general de las tres regiones
    public float promedioGeneral() {
        float suma = 0;
        for (int i = 0; i < 3; i++) {
            suma += regiones[i];
        }
        return suma / 3;
    }

    // Regresa el nombre de la región con mayor promedio
    public String regionMayor() {
        int mayorIdx = 0;
        for (int i = 1; i < 3; i++) {
            if (regiones[i] > regiones[mayorIdx]) {
                mayorIdx = i;
            }
        }
        if (mayorIdx == 0) return "Norte";
        if (mayorIdx == 1) return "Centro";
        return "Sur";
    }

    // Obtener promedio específico de una región
    public float getPromedio(int i) {
        return regiones[i];
    }
}

Main

import paquete.Meteorologia;

class Main {
    public static void main(String[] args) {
        Meteorologia obj = new Meteorologia();
        String[] nombres = {"Norte", "Centro", "Sur"};

        System.out.println("Promedios pluviales por región:");
        for (int i = 0; i < 3; i++) {
            System.out.println(nombres[i] + ": " + obj.getPromedio(i) + " mm");
        }

        System.out.println("\nPromedio general de las 3 regiones: " + obj.promedioGeneral() + " mm");
        System.out.println("La región con mayor promedio es: " + obj.regionMayor());
    }
}

Desplazar arreglo hacia la derecha

Objetivo: Cargar un arreglo con n elementos y desplazar sus elementos un lugar hacia la derecha, teniendo en cuenta que el último componente se ha de desplazar al primer lugar.

Clase

package paquete;

public class DesplazarDerecha {
    private int[] v;
    private int n;

    // Constructor: recibe n y llena el arreglo con valores de ejemplo
    public DesplazarDerecha(int n) {
        this.n = n;
        v = new int[n];
        // Cargar arreglo (ejemplo: valores 1,2,3,...)
        for (int i = 0; i < n; i++) {
            v[i] = i + 1;
        }
    }

    // Método para desplazar a la derecha
    public void desplazarDerecha() {
        int ultimo = v[n - 1]; // Guardar el último elemento
        // Mover todos hacia la derecha
        for (int i = n - 1; i > 0; i--) {
            v[i] = v[i - 1];
        }
        // Colocar el último en la primera posición
        v[0] = ultimo;
    }

    // Mostrar elemento i
    public int getElemento(int i) {
        return v[i];
    }
}

Main

import paquete.DesplazarDerecha;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Ingrese la cantidad de elementos (n): ");
        int n = sc.nextInt();

        DesplazarDerecha obj = new DesplazarDerecha(n);

        System.out.println("\nArreglo original:");
        for (int i = 0; i < n; i++) {
            System.out.print(obj.getElemento(i) + " ");
        }

        obj.desplazarDerecha();

        System.out.println("\n\nArreglo desplazado a la derecha:");
        for (int i = 0; i < n; i++) {
            System.out.print(obj.getElemento(i) + " ");
        }
    }
}

Diferencia máxima entre elementos consecutivos (vector de 50 reales)

Objetivo: Dado un vector A de 50 números reales, obtener la diferencia más grande entre dos elementos consecutivos de este vector.

JN6xAAAABklEQVQDALTXlU4x5oPeAAAAAElFTkSuQmCC

Clase

package paquete;

public class VectorDiferencias {
    private float[] A = new float[50];

    // Constructor: llenamos el vector con valores de ejemplo
    public VectorDiferencias() {
        for (int i = 0; i < 50; i++) {
            A[i] = (float)(Math.random() * 100); // números aleatorios 0–100
        }
    }

    // Retorna el mayor valor absoluto de diferencias consecutivas
    public float mayorDiferencia() {
        float mayor = Math.abs(A[1] - A[0]);
        for (int i = 1; i < 49; i++) {
            float diferencia = Math.abs(A[i+1] - A[i]);
            if (diferencia > mayor) {
                mayor = diferencia;
            }
        }
        return mayor;
    }

    // Retornar un elemento
    public float getElemento(int i) {
        return A[i];
    }
}

Main

import paquete.VectorDiferencias;

class Main {
    public static void main(String[] args) {
        VectorDiferencias obj = new VectorDiferencias();

        System.out.println("Vector A (50 elementos):");
        for (int i = 0; i < 50; i++) {
            System.out.println("A[" + i + "] = " + obj.getElemento(i));
        }

        System.out.println("\nLa mayor diferencia entre elementos consecutivos es: " + obj.mayorDiferencia());
    }
}

Arreglo inicializado con datos: imprimir y obtener mayor

Ejemplo: Cargue un arreglo con los valores x = {1.85, 500.59, 3.56, 7.00, 1.90, 8.7}, imprima verticalmente el arreglo, imprima el mayor elemento. Los elementos se retornan uno a uno al programa principal.

Clase

package paquete;

// Ejemplo de un arreglo inicializado con datos
// Cargue un arreglo con los valores x = {1.85, 500.59, 3.56, 7.00, 1.90, 8.7}
// Imprima verticalmente el arreglo
// Imprima el mayor elemento
// Los elementos se retornan uno a uno al programa principal
public class Arreglo1 {
    private static final float[] x = {1.85f, 500.59f, 3.56f, 7.00f, 1.90f, 8.7f};

    public float mayor() {
        int i;
        float max = x[0];
        for (i = 1; i < 6; i++) {
            if (x[i] > max) {
                max = x[i];
            }
        }
        return max;
    }

    public float mostrarElemento(int i) {
        return x[i];
    }
}

Main

import paquete.Arreglo1;

class Main {
    public static void main(String[] args) {
        Arreglo1 obj = new Arreglo1();
        int i;
        System.out.println("Los elementos del arreglo x son:");
        for (i = 0; i < 6; i++) {
            System.out.println(" x[" + i + "]= " + obj.mostrarElemento(i));
        }
        System.out.println("\nEl elemento mayor es: " + obj.mayor());
    }
}

Arreglo como atributo de clase: asignación y visualización

Clase

package paquete;

public class Arreglo2 {
    private int[] x = new int[10]; // Define el arreglo como atributo de la clase

    public void asignar(int i) {
        x[i] = 3;
    }

    public int mostrarElemento(int i) {
        return x[i];
    }

    public int[] getX() {
        return x;
    }
}

Main

import paquete.Arreglo2;

public class Main {
    public static void main(String[] args) {
        Arreglo2 obj = new Arreglo2();
        int ip, elemento;
        int[] x = obj.getX();

        System.out.println("x contiene = " + x);

        // Imprime horizontalmente todos los elementos del arreglo
        System.out.println("Elementos del arreglo una vez se crea");
        for (ip = 0; ip < 10; ip = ip + 1) {
            elemento = obj.mostrarElemento(ip);
            System.out.print(elemento + "\t");
        }

        // Carga el arreglo, asignándole el número 3 a todos sus elementos
        for (ip = 0; ip < 10; ip = ip + 1)
            obj.asignar(ip);

        // Imprime verticalmente todos los elementos del arreglo
        System.out.println("\nElementos del arreglo después de la carga con el valor de 3");
        for (ip = 0; ip < 10; ip = ip + 1) {
            elemento = x[ip];
            System.out.println(elemento);
        }
    }
}

Arreglo dinámico: asignación por entrada del usuario y visualización

Objetivo: Cargar un arreglo con n elementos, asignar valores desde la entrada estándar, imprimir verticalmente y mostrar la longitud física del arreglo.

Clase

package paquete;

// *************************************************
// Cargue un arreglo con n cantidad de elementos e
// imprima (verticalmente) después de asignarle datos
// imprima cuántos elementos tiene el arreglo
// *************************************************
public class Arreglo3 {
    private double[] x; // Declara el arreglo x
    private int lim;

    public Arreglo3(int lim) {
        this.lim = lim; // constructor
        x = new double[lim]; // Crea el arreglo con límite cantidad de elementos
    }

    public void asignar(double dato, int i) {
        x[i] = dato;
    }

    public double mostrarElemento(int i) {
        return x[i];
    }

    public double[] getX() {
        return x;
    }

    public int getLim() {
        return lim;
    }
}

Main

import paquete.Arreglo3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int i;
        double dato;
        int limite = 0;
        boolean error;

        do {
            try {
                System.out.println("\n\n\nEntre la cantidad de elementos que necesita:");
                limite = Integer.parseInt(br.readLine());
                if (limite <= 0) {
                    error = true;
                    System.out.println("Error... la cantidad de elementos debe ser positiva y no cero");
                } else
                    error = false;
            } catch (IOException e) {
                System.out.print("\nError... de entrada de datos");
                error = true;
            } catch (NumberFormatException e) {
                System.out.print("\nError... de conversión de datos");
                error = true;
            }
        } while (error);

        Arreglo3 obj = new Arreglo3(limite);

        for (i = 0; i < obj.getLim(); i++) {
            try {
                System.out.println("\nEntre un número de tipo double:");
                dato = Double.parseDouble(br.readLine());
                obj.asignar(dato, i);
            } catch (IOException e) {
                System.out.print("\nError... de entrada de datos");
                i--;
            } catch (NumberFormatException e) {
                System.out.print("\nError... de conversión de datos");
                i--;
            }
        }

        System.out.println("\n\nLos elementos del arreglo después de asignar\n");
        for (i = 0; i < obj.getLim(); i++)
            System.out.println(obj.mostrarElemento(i));

        System.out.println("\n\nLongitud física del arreglo: " + obj.getX().length + " elementos");
    }
}

Se han corregido errores ortográficos, gramática y uso de mayúsculas en las descripciones y comentarios para mejorar la claridad. Los fragmentos de código se conservan funcionales y se han mantenido todos los contenidos originales, respetando las imágenes marcadas como JN6xAAAABklEQVQDALTXlU4x5oPeAAAAAElFTkSuQmCC .

Entradas relacionadas: