Ejercicios resueltos

Ejercicios resueltos utilizando arreglos multidimensionales

(Ver Arreglos multidimensionales)

1) Hacer un programa para ingresar una matriz de f filas y c columnas y calcular el mayor, el menor y el promedio.

          import java.util.*;

          public class Ejercicio01 {

                   static Scanner entrada = new Scanner(System.in);

                   public static void ingresarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++){
                                            System.out.print(«Matriz[«+i+»][«+j+»]: «);
                                            Matriz[i][j] = entrada.nextDouble();
                                     }
                   }
                   public static void reportarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++){
                                     for(int j=0;j<c;j++)
                                            System.out.print(Matriz[i][j] + «\t»);
                                     System.out.println();
                              }
                   }
                   public static double calcularMayor(double x[][], int f, int c){
                              double mayor=x[0][0];
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++)
                                            if(x[i][j]>mayor)
                                                     mayor = x[i][j];
                              return mayor;
                   }
                   public static double calcularMenor(double x[][], int f, int c){
                              double menor=x[0][0];
                              for(int i=0;i<f;i++)
                                    for(int j=0;j<c;j++)
                                           if(x[i][j]<menor)
                                                    menor = x[i][j];
                              return menor;
                   }
                   public static double calcularPromedio(double x[][], int f, int c){
                              double suma=0;
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++)
                                            suma = suma+x[i][j];
                              return suma/(f*c);
                   }
                   public static void main(String[] args) {
                              double M[][];
                              int f, c;
                              System.out.print(«Ingresar numero de filas: «);
                              f = entrada.nextInt();
                              System.out.print(«Ingresar numero de columnas: «);
                              c = entrada.nextInt();
                              M = new double[f][c];
                              ingresarMatriz(M,f,c);
                              System.out.println(«Matriz ingresada»);
                              reportarMatriz(M,f,c);
                              System.out.println(«El mayor es: » + calcularMayor(M,f,c));
                              System.out.println(«El menor es: » + calcularMenor(M,f,c));
                              System.out.println(«El promedio es: » + calcularPromedio(M,f,c));
                   }
          }

2) Hacer un programa para ingresar una matiz de f filas y c columnas y calcular la suma de las filas y la suma de las columnas.

          import java.util.*;

          public class Ejercicio02 {

                   static Scanner entrada = new Scanner(System.in);

                   public static void ingresarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++){
                                            System.out.print(«Matriz[«+i+»][«+j+»]: «);
                                            Matriz[i][j] = entrada.nextDouble();
                                     }
                   }
                   public static void reportarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++){
                                     for(int j=0;j<c;j++)
                                            System.out.print(Matriz[i][j] + «\t»);
                                     System.out.println();
                              }
                   }
                   public static void calcularSumaDeFilas(double x[][], int f, int c, double sf[]){
                              for(int i=0;i<f;i++){
                                     sf[i] = 0;
                                     for(int j=0;j<c;j++)
                                            sf[i] = sf[i]+x[i][j];
                              }
                   }
                   public static void calcularSumaDeColumnas(double x[][], int f, int c, double sc[]){
                              for(int j=0;j<c;j++){
                                     sc[j] = 0;
                                     for(int i=0;i<f;i++)
                                            sc[j] = sc[j]+x[i][j];
                              }
                   }
                   public static void reportarSumas(double sf[], double sc[], int f, int c){
                              for(int i=0;i<f;i++)
                                     System.out.println(«Suma de fila «+i+»: » + sf[i]);
                              for(int j=0;j<c;j++)
                                     System.out.println(«Suma de columna «+j+»: » + sc[j]);
                   }
                   public static void main(String[] args) {
                              double M[][], sf[], sc[];
                              int f, c;
                              System.out.print(«Ingresar numero de filas: «);
                              f = entrada.nextInt();
                              System.out.print(«Ingresar numero de columnas: «);
                              c = entrada.nextInt();
                              M = new double[f][c];
                              sf = new double[f];
                              sc = new double[c];
                              ingresarMatriz(M,f,c);
                              System.out.println(«Matriz ingresada»);
                              reportarMatriz(M,f,c);
                              calcularSumaDeFilas(M,f,c,sf);
                              calcularSumaDeColumnas(M,f,c,sc);
                              reportarSumas(sf,sc,f,c);
                   }
          }

3) Hacer un programa para ingresar una matriz de f filas y c columnas y calcular su matriz transpuesta.

          import java.util.*;

          public class Ejercicio03 {

                   static Scanner entrada = new Scanner(System.in);

                   public static void ingresarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++){
                                            System.out.print(«Matriz[«+i+»][«+j+»]: «);
                                            Matriz[i][j] = entrada.nextDouble();
                                     } 
                   }
                   public static void reportarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++){
                                     for(int j=0;j<c;j++)
                                            System.out.print(Matriz[i][j] + «\t»);
                                     System.out.println();
                              }
                   }
                   public static void calcularMatrizTranspuesta(double x[][], int f, int c, double T[][]){
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++)
                                            T[j][i] = x[i][j];
                   }
                   public static void main(String[] args) {
                              double M[][], T[][];
                              int f, c;
                              System.out.print(«Ingresar numero de filas: «);
                              f = entrada.nextInt();
                              System.out.print(«Ingresar numero de columnas: «);
                              c = entrada.nextInt();
                              M = new double[f][c];
                              T = new double[c][f];
                              ingresarMatriz(M,f,c);
                              System.out.println(«Matriz ingresada»);
                              reportarMatriz(M,f,c);
                              calcularMatrizTranspuesta(M,f,c,T);
                              System.out.println(«Matriz transpuesta»);
                              reportarMatriz(T,c,f);
                   }
          }

4) Hacer un programa para ingresar una matriz cuadrada y reportar si es una matriz simétrica.

          import java.util.*;

          public class Ejercicio04 {

                   static Scanner entrada = new Scanner(System.in);

                   public static void ingresarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++){
                                            System.out.print(«Matriz[«+i+»][«+j+»]: «);
                                            Matriz[i][j] = entrada.nextDouble();
                                     }
                   }
                   public static void reportarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++){
                                     for(int j=0;j<c;j++)
                                           System.out.print(Matriz[i][j] + «\t»);
                                     System.out.println();
                              }
                   }
                   public static boolean esSimetrica(double x[][], int n){
                              for(int i=0;i<n;i++)
                                     for(int j=i+1;j<n;j++)
                                            if(x[i][j]!=x[j][i])
                                                     return false;
                              return true;
                   }
                   public static void main(String[] args) {
                              double M[][];
                              int n;
                              System.out.print(«Ingresar orden de la matriz cuadrada: «);
                              n = entrada.nextInt();
                              M = new double[n][n];
                              ingresarMatriz(M,n,n);
                              System.out.println(«Matriz ingresada»);
                              reportarMatriz(M,n,n);
                              if(esSimetrica(M,n))
                                        System.out.println(«La matriz es simétrica»);
                              else
                                        System.out.println(«La matriz no es simétrica»);
                   }
          }

5) Hacer un programa para ingresar una matriz y reportar el mayor elemento de cada fila y columna.

          import java.util.*;

          public class Ejercicio05 {

                   static Scanner entrada = new Scanner(System.in);

                   public static void ingresarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++){
                                            System.out.print(«Matriz[«+i+»][«+j+»]: «);
                                            Matriz[i][j] = entrada.nextDouble();
                                     }
                   }
                   public static void reportarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++){
                                     for(int j=0;j<c;j++)
                                            System.out.print(Matriz[i][j] + «\t»);
                                     System.out.println();
                              }
                   }
                   public static void calcularMayorElementoDeCadaFila(double x[][], int f, int c){
                              double mayor;
                              for(int i=0;i<f;i++){
                                     mayor = x[i][0];
                                     for(int j=0;j<c;j++){
                                            if(x[i][j]>mayor)
                                                     mayor = x[i][j];
                                     }
                                     System.out.println(«El mayor elemento de la fila «+i+» es: » + mayor);
                              }
                   }
                   public static void calcularMayorElementoDeCadaColumna(double x[][], int f, int c){
                              double mayor;
                              for(int j=0;j<c;j++){
                                     mayor = x[0][j];
                                     for(int i=0;i<f;i++){
                                            if(x[i][j]>mayor)
                                                     mayor = x[i][j];
                                     }
                                     System.out.println(«El mayor elemento de la columna «+j+» es: » + mayor);
                              }
                   }
                   public static void main(String[] args) {
                              double M[][];
                              int f, c;
                              System.out.print(«Ingresar numero de filas: «);
                              f = entrada.nextInt();
                              System.out.print(«Ingresar numero de columnas: «);
                              c = entrada.nextInt();
                              M = new double[f][c];
                              ingresarMatriz(M,f,c);
                              System.out.println(«Matriz ingresada»);
                              reportarMatriz(M,f,c);
                              calcularMayorElementoDeCadaFila(M,f,c);
                              calcularMayorElementoDeCadaColumna(M,f,c);
                   }
          }

6) Hacer un programa para ingresar una matriz de f filas y c columnas con las siguientes opciones:

  • Ingresar un número de fila y eliminarla de la matriz.
  • Ingresar un número de columna y eliminarla de la matriz.

          import java.util.*;

          public class Ejercicio06 {

                   static Scanner entrada = new Scanner(System.in);

                   public static void ingresarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++)
                                     for(int j=0;j<c;j++){
                                            System.out.print(«Matriz[«+i+»][«+j+»]: «);
                                            Matriz[i][j] = entrada.nextDouble();
                                     }
                   }
                   public static void reportarMatriz(double Matriz[][], int f, int c){
                              for(int i=0;i<f;i++){
                                     for(int j=0;j<c;j++)
                                            System.out.print(Matriz[i][j] + «\t»);
                                     System.out.println();
                              }
                   }
                   public static int eliminarFila(double x[][], int f, int c, int fe){
                              for(int i=fe;i<f-1;i++)
                                     for(int j=0;j<c;j++)
                                            x[i][j] = x[i+1][j];
                              f = f-1;
                              return f;
                   }
                   public static int eliminarColumna(double x[][], int f, int c, int ce){
                              for(int j=ce;j<c-1;j++)
                                     for(int i=0;i<f;i++)
                                            x[i][j] = x[i][j+1];
                              c = c-1;
                              return c;
                   }
                   public static void main(String[] args) {
                              double M[][];
                              int f, c, fe, ce;
                              System.out.print(«Ingresar numero de filas: «);
                              f = entrada.nextInt();
                              System.out.print(«Ingresar numero de columnas: «);
                              c = entrada.nextInt();
                              M = new double[f][c];
                              ingresarMatriz(M,f,c);
                              System.out.println(«Matriz ingresada»);
                              reportarMatriz(M,f,c);
                              System.out.print(«Ingresar fila a eliminar: «);
                              fe = entrada.nextInt();
                              f = eliminarFila(M,f,c,fe);
                              System.out.println(«Matriz final»);
                              reportarMatriz(M,f,c);
                              System.out.print(«Ingresar columna a eliminar: «);
                              ce = entrada.nextInt();
                              c = eliminarColumna(M,f,c,ce);
                              System.out.println(«Matriz final»);
                              reportarMatriz(M,f,c);
                   }
          }

7) Hacer un programa para ingresar dos matrices, una de f1 filas y c1 columnas y otra de f2 filas y c2 columnas y reportar su producto si es que se puede realizar.

         import java.util.*;

         public class Ejercicio07 {

                  static Scanner entrada = new Scanner(System.in);

                  public static void ingresarMatriz(double Matriz[][], int f, int c){
                             for(int i=0;i<f;i++)
                                    for(int j=0;j<c;j++){
                                           System.out.print(«Matriz[«+i+»][«+j+»]: «);
                                           Matriz[i][j] = entrada.nextDouble();
                                    }
                  }
                  public static void reportarMatriz(double Matriz[][], int f, int c){
                             for(int i=0;i<f;i++){
                                    for(int j=0;j<c;j++)
                                           System.out.print(Matriz[i][j] + «\t»);
                                    System.out.println();
                             }
                  }
                  public static void calcularProducto(double x[][],double y[][],double P[][], int f1, int c1, int c2){
                             for(int i=0;i<f1;i++)
                                    for(int j=0;j<c2;j++){
                                           P[i][j]=0;
                                           for(int k=0;k<c1;k++)
                                                  P[i][j] = P[i][j]+x[i][k]*y[k][j];
                                    }
                  }
                  public static void main(String[] args) {
                             double A[][], B[][], S[][], P[][];
                             int f1, c1, f2, c2;
                             System.out.println(«Primera matriz»);
                             System.out.print(«Ingresar numero de filas: «);
                             f1 = entrada.nextInt();
                             System.out.print(«Ingresar numero de columnas: «);
                             c1 = entrada.nextInt();
                             A = new double[f1][c1];
                             ingresarMatriz(A,f1,c1);
                             System.out.println(«Segunda matriz»);
                             System.out.print(«Ingresar numero de filas: «);
                             f2 = entrada.nextInt();
                             System.out.print(«Ingresar numero de columnas: «);
                             c2 = entrada.nextInt();
                             B = new double[f2][c2];
                             ingresarMatriz(B,f2,c2);
                             if(c1==f2){
                                       P = new double[f1][c2];
                                       calcularProducto(A,B,P,f1,c1,c2);
                                       System.out.println(«Matriz producto»);
                                       reportarMatriz(P,f1,c2);
                             }
                             else
                                       System.out.println(«No se pueden multiplicar las matrices»);
                  }
         }

ArrayList

(Ver Listas)

8) Hacer un programa que use la clase ArrayList de números enteros. El programa deberá mostrar un menú de opciones, donde se pueda agregar un número, buscar un número, modificar un número, eliminar un número e insertar un número en una posición indicada. Además ordenar la lista de manera ascendente y descendente.

         import java.util.*;

         public class AplicacionListaEnteros {

                  ArrayList<Integer> listaEnteros;

                  public static void main(String[] args) {
                             AplicacionListaEnteros aplicacion = new AplicacionListaEnteros();
                             aplicacion.listaEnteros = new ArrayList();
                             aplicacion.leerOpcion();
                  }
                  public void leerOpcion(){
                             Scanner entrada = new Scanner(System.in);
                             int opcion;
                             do{
                                       System.out.println(«\nLista de numeros enteros»);
                                       System.out.println(«1) Agregar elemento»);
                                       System.out.println(«2) Buscar elemento»);
                                       System.out.println(«3) Modificar elemento»);
                                       System.out.println(«4) Eliminar elemento»);
                                       System.out.println(«5) Insertar elemento»);
                                       System.out.println(«6) Mostrar elementos»);
                                       System.out.println(«7) Ordenar ascendente»);
                                       System.out.println(«8) Ordenar descendente»);
                                       System.out.println(«9) Salir\n»);
                                       System.out.print(«Ingresar numero de opción(1-9): «);
                                       opcion = entrada.nextInt();
                                       switch(opcion)
                                       {
                                             case 1:
                                                            ingresarElemento();
                                                            break;
                                             case 2:
                                                            buscarElemento();
                                                            break;
                                             case 3:
                                                            modificarElemento();
                                                            break;
                                             case 4:
                                                            eliminarElemento();
                                                            break;
                                             case 5:
                                                            insertarElemento();
                                                            break;
                                             case 6:
                                                            mostrarElementos();
                                                            break;
                                             case 7:
                                                            ordenarAscendente();
                                                            break;
                                             case 8:
                                                            ordenarDescendente();
                                                            break;
                                       }
                             }while(opcion!=9);
                  }
                  public void ingresarElemento(){
                             Scanner entrada = new Scanner(System.in);
                             int elemento;
                             System.out.print(«Ingresar elemento: «);
                             elemento = entrada.nextInt();
                             listaEnteros.add(elemento);
                  }
                  public void buscarElemento(){
                             Scanner entrada = new Scanner(System.in);
                             int elemento, indice;
                             System.out.print(«Ingresar elemento a buscar: «);
                             elemento = entrada.nextInt();
                             indice = listaEnteros.indexOf(elemento);
                             if(indice!=-1)
                                    System.out.println(«El elemento se encuentra en posicion: » + indice);
                             else
                                    System.out.println(«El elemento no se encuentra»);
                  }
                  public void modificarElemento(){
                             Scanner entrada = new Scanner(System.in);
                             int elemento, nuevoElemento, indice;
                             System.out.print(«Ingresar elemento a modificar: «);
                             elemento = entrada.nextInt();
                             indice = listaEnteros.indexOf(elemento);
                             if(indice!=-1){
                                    System.out.print(«Ingresar nuevo elemento: «);
                                    nuevoElemento = entrada.nextInt();
                                    listaEnteros.set(indice, nuevoElemento);
                             }
                             else
                                    System.out.println(«El elemento no se encuentra»);
                  }
                  public void eliminarElemento(){
                             Scanner entrada = new Scanner(System.in);
                             int elemento, indice;
                             System.out.print(«Ingresar elemento a eliminar: «);
                             elemento = entrada.nextInt();
                             indice = listaEnteros.indexOf(elemento);
                             if(indice!=-1){
                                    listaEnteros.remove(indice);
                                    System.out.println(«Elemento eliminado»);
                             }
                             else
                                    System.out.println(«El elemento no se encuentra»);
                  }
                  public void insertarElemento(){
                             Scanner entrada = new Scanner(System.in);
                             int elemento, indice;
                             System.out.print(«Ingresar elemento a insertar: «);
                             elemento = entrada.nextInt();
                             System.out.print(«Ingresar posicion a insertar: «);
                             indice = entrada.nextInt();
                             listaEnteros.add(indice,elemento);
                  }
                  public void mostrarElementos(){
                             if(!listaEnteros.isEmpty()){
                                    System.out.println(«Elementos de la lista: «);
                                    for(int elemento : listaEnteros)
                                           System.out.println(elemento);
                             }
                             else
                                           System.out.println(«No existen elementos en la lista»);
                  }
                  public void ordenarAscendente(){
                             Collections.sort(listaEnteros);
                             mostrarElementos();
                  }
                  public void ordenarDescendente(){
                             Comparator<Integer> comparador = Collections.reverseOrder();
                             Collections.sort(listaEnteros,comparador);
                             mostrarElementos();
                  }
         }