Advertisement
Guest User

matrizPotencias

a guest
Jan 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.45 KB | None | 0 0
  1. package org.ip.sesion10;
  2.  
  3. public class MatrizPotencias implements Comparable<Object> {
  4.  
  5.     private Potencia [][] matrizPotencias;
  6.  
  7.     public MatrizPotencias (int numFilas,int numColumnas) {
  8.         matrizPotencias = new Potencia[numFilas][numColumnas];
  9.         for (int i = 0; i < matrizPotencias.length; i++) {
  10.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  11.                 matrizPotencias[i][j] = new Potencia(i, j);
  12.             }
  13.         }
  14.     }
  15.  
  16.     public MatrizPotencias(Potencia [][] matriz) {
  17.         matrizPotencias = new Potencia[matriz.length][matriz[0].length];
  18.         for (int i = 0; i < matriz.length; i++) {
  19.             for (int j = 0; j < matriz[i].length; j++) {
  20.                 matrizPotencias[i][j] = new Potencia(matriz[i][j]);
  21.             }
  22.         }
  23.     }
  24.  
  25.     public MatrizPotencias(MatrizPotencias matrizPotencias){
  26.         this.matrizPotencias = new Potencia[matrizPotencias.getNumeroFilas()][matrizPotencias.getNumeroColumnas()];
  27.         for (int i = 0; i < matrizPotencias.getNumeroFilas(); i++) {
  28.             for (int j = 0; j < matrizPotencias.getNumeroColumnas(); j++) {
  29.                 this.matrizPotencias[i][j] = new Potencia(matrizPotencias.getPotencia(i, j));
  30.             }
  31.         }
  32.     }
  33.  
  34.     public Potencia [][] getMatriz(){
  35.         return matrizPotencias;
  36.     }
  37.  
  38.     public int getNumeroPotencias() {
  39.         return matrizPotencias.length* matrizPotencias[0].length;
  40.     }
  41.  
  42.     public int getNumeroFilas() {
  43.         return matrizPotencias.length;
  44.     }
  45.  
  46.     public int getNumeroColumnas() {
  47.         return matrizPotencias[0].length;
  48.     }
  49.  
  50.     public boolean tienenTodasPotenciasMismaBase() {
  51.         int base = matrizPotencias[0][0].getBase();
  52.         for (int i = 0; i < matrizPotencias.length; i++) {
  53.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  54.                 if (matrizPotencias[i][j].getBase() != base)
  55.                     return false;
  56.             }
  57.         }
  58.  
  59.         return true;
  60.     }
  61.  
  62.     public void setMatrizPotencia(Potencia potencia) {
  63.         if (matrizPotencias == null)
  64.             return;
  65.         else {
  66.             for (int i = 0; i < matrizPotencias.length; i++) {
  67.                 for (int j = 0; j < matrizPotencias[i].length; j++) {
  68.                     matrizPotencias[i][j] = new Potencia(potencia);
  69.                 }
  70.             }
  71.         }
  72.     }
  73.  
  74.     public Potencia getPotencia (int fila, int columna) {
  75.         if ((fila < 0) || (fila > matrizPotencias.length - 1)) {
  76.             throw new RuntimeException("Valor de fila fuera de rango");
  77.         }
  78.         if ((columna < 0) || (columna > matrizPotencias[0].length - 1)) {
  79.             throw new RuntimeException("Valor de columna fuera de rango");
  80.         }
  81.         return new Potencia(matrizPotencias[fila][columna]);
  82.     }
  83.  
  84.     public boolean setPotencia (int fila, int columna, Potencia potencia) {
  85.         if ((fila < 0) || (fila > matrizPotencias.length - 1)) {
  86.             return false;
  87.         }
  88.         if ((columna < 0) || (columna > matrizPotencias[0].length - 1)) {
  89.             return false;
  90.         }
  91.         matrizPotencias[fila][columna] = new Potencia(potencia);
  92.         return true;
  93.     }
  94.  
  95.     public Potencia getMinimaPotencia() {
  96.         Potencia min = matrizPotencias[0][0];
  97.         for (int i = 0; i < matrizPotencias.length; i++) {
  98.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  99.                 if (matrizPotencias[i][j].compareTo(min) < 0)
  100.                     min = matrizPotencias[i][j];
  101.             }
  102.         }
  103.         return new Potencia(min);
  104.     }
  105.  
  106.     public Potencia getMaximaPotencia() {
  107.         Potencia max = matrizPotencias[0][0];
  108.         for (int i = 0; i < matrizPotencias.length; i++) {
  109.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  110.                 if (matrizPotencias[i][j].compareTo(max) > 0)
  111.                     max = matrizPotencias[i][j];
  112.             }
  113.         }
  114.         return new Potencia(max);
  115.     }
  116.  
  117.     public Potencia getPotenciaProductoMatriz() {
  118.         if(!tienenTodasPotenciasMismaBase())
  119.             throw new RuntimeException("No todas las potencias tienen la misma base");
  120.         Potencia resultado = new Potencia(matrizPotencias[0][0].getBase(), 0);
  121.         for (int i = 0; i < matrizPotencias.length; i++) {
  122.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  123.                 resultado =resultado.producto(matrizPotencias[i][j]);
  124.             }
  125.         }
  126.         return resultado;
  127.     }
  128.  
  129.     public double getValorSumaMatriz() {
  130.         double suma = 0.0;
  131.         for (int i = 0; i < matrizPotencias.length; i++) {
  132.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  133.                 suma = suma + matrizPotencias[i][j].getValor();
  134.             }
  135.         }
  136.         return suma;
  137.     }
  138.  
  139.     public boolean busquedaPotencia(Potencia potencia) {
  140.         for (int i = 0; i < matrizPotencias.length ; i++) {
  141.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  142.                 if (matrizPotencias[i][j].equals(potencia))
  143.                     return true;
  144.             }
  145.         }
  146.         return false;
  147.     }
  148.  
  149.     private void insercion(Potencia [] array) {
  150.         for (int i = 1; i < array.length; i++) {
  151.             Potencia aux = array[i];
  152.             int j;
  153.             for (j = i - 1; (j >= 0) && (aux.compareTo(array[j]) < 0); j--) {
  154.                 array [j + 1] = array[j];
  155.             }
  156.             array[j + 1] = aux;
  157.         }
  158.     }
  159.  
  160.     public void ordenacionMatriz() {
  161.         Potencia [] array = new Potencia[this.getNumeroPotencias()];
  162.         int k = 0;
  163.         for (int i = 0; i < matrizPotencias.length; i++) {
  164.             for(int j = 0; j < matrizPotencias[i].length; j++) {
  165.                 array[k] = new Potencia(matrizPotencias[i][j]);
  166.                 k++;
  167.             }
  168.         }
  169.         insercion(array);
  170.         k = 0;
  171.         for (int i = 0; i < matrizPotencias.length; i++) {
  172.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  173.                 matrizPotencias[i][j] = array[k];
  174.                 k++;
  175.             }
  176.         }
  177.     }
  178.  
  179.     @Override
  180.     public String toString() {
  181.         String salida = "Matriz Potencias:\n";
  182.         for (int i = 0; i < matrizPotencias.length; i++) {
  183.             for (int j = 0; j < matrizPotencias[i].length; j++) {
  184.                 if (j != matrizPotencias[i].length - 1)
  185.                     salida += matrizPotencias[i][j].toString() + "  ";
  186.                 else
  187.                     salida += matrizPotencias[i][j].toString();
  188.             }
  189.             if (i != matrizPotencias.length - 1)
  190.                 salida += "\n";
  191.         }
  192.         return salida;
  193.     }
  194.  
  195.     @Override
  196.     public boolean equals(Object obj) {
  197.         if (this == obj)
  198.             return true;
  199.         if (obj == null)
  200.             return false;
  201.         if (getClass() != obj.getClass())
  202.             return false;
  203.         if (!(obj instanceof MatrizPotencias))
  204.             return false;
  205.         MatrizPotencias otraMatriz = (MatrizPotencias) obj;
  206.  
  207.         if (this.getNumeroPotencias() != otraMatriz.getNumeroPotencias())
  208.             return false;
  209.         boolean equal = true;
  210.         for (int i = 0; i < matrizPotencias.length && equal; i++) {
  211.             for (int j = 0; j < matrizPotencias[i].length && equal; j++){
  212.                 if (!matrizPotencias[i][j].equals(otraMatriz.getPotencia(i, j)))
  213.                     equal = false;
  214.             }
  215.         }
  216.         return equal;
  217.     }
  218.  
  219.     @Override
  220.     public int compareTo(Object obj) {
  221.         MatrizPotencias otraMatriz = (MatrizPotencias) obj;
  222.  
  223.         if (this.getValorSumaMatriz() > otraMatriz.getValorSumaMatriz()) {
  224.             return 1;
  225.         }
  226.         if (this.getValorSumaMatriz() < otraMatriz.getValorSumaMatriz()) {
  227.             return -1;
  228.         }
  229.         else
  230.             return 0;
  231.     }
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement