Advertisement
HayCZ

izapr_Zapocet_Class

Apr 27th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.88 KB | None | 0 0
  1. package zapocettest01;
  2.  
  3. import java.util.Locale;
  4.  
  5. /**
  6.  * Trida Matice bude obsahovat nekolik zakladnich operaci s dvojrozmernym polem.
  7.  *
  8.  */
  9. public class Matice {
  10.  
  11.     /**
  12.      * TODO Doplnte konstanty, ktere budou definovat pripustny maximalni rozmer
  13.      * matice
  14.      */
  15.     public final static int MaxRadek = 10;
  16.     public final static int MaxSloupec = 10;
  17.     /**
  18.      * TODO Doplnte atributy tridy Matice
  19.      */
  20.     public final double[][] pole;
  21.     private final int pocetRadku;
  22.     private final int pocetSloupcu;
  23.  
  24.     /**
  25.      * TODO Upravte konstruktor tridy Matice tak, aby inicializoval obdelnikovou
  26.      * matici
  27.      */
  28.     public Matice(int pocetRadku, int pocetSloupcu) {
  29.         if (0 < pocetRadku && 0 < pocetSloupcu && pocetRadku <= MaxRadek && pocetSloupcu <= MaxSloupec) {
  30.             this.pole = new double[pocetRadku][pocetSloupcu];
  31.             this.pocetRadku = pocetRadku;
  32.             this.pocetSloupcu = pocetSloupcu;
  33.         } else {
  34.             this.pole = null;
  35.             this.pocetRadku = 0;
  36.             this.pocetSloupcu = 0;
  37.         }
  38.     }
  39.  
  40.     /**
  41.      * TODO Doplnte konstruktor ctvercove matice
  42.      */
  43.     public Matice(int n) {
  44.         this(n, n);
  45.     }
  46.  
  47.     /**
  48.      * Metoda vytvorPodleIndexu poskytne novy objekt typu Matice a provede
  49.      * inicializaci prvku matice systematickym obsahem tak, ze hodnota desitek
  50.      * bude rovna cislu radku a hodnota jednotek bude rovna cislu sloupce.
  51.      *
  52.      * TODO Doplnte implementaci metodu vytvorPodleIndexu
  53.      *
  54.      * @param pocetRadku kladne cislo s horizontalnim rozmerem matice
  55.      * @param pocetSloupcu kladne cislo s vertikalnim rozmerem matice
  56.      *
  57.      * @return vraci referenci na novy objekt typu Matice *
  58.      */
  59.     public static Matice vytvorPodleIndexu(int pocetRadku, int pocetSloupcu) {
  60.         if (pocetRadku >= 0 && pocetSloupcu >= 0) {
  61.             Matice m = new Matice(pocetRadku, pocetSloupcu);
  62.             for (int i = 0; i < pocetRadku; i++) {
  63.                 for (int j = 0; j < pocetSloupcu; j++) {
  64.                     m.pole[i][j] = (i + (j * 0.1));
  65.                 }
  66.             }
  67.             return m;
  68.         } else {
  69.             return null;
  70.         }
  71.  
  72.     }
  73.  
  74.     /**
  75.      * Metoda dejSloupec doda kopii sloupce, ktery bude urcen parametrem metody
  76.      *
  77.      * TODO Implementujte metodu dejSloupec
  78.      */
  79.    
  80.     /**
  81.      * temp - Dočasné pole pro uložení sloupce.
  82.      * @param sloupec
  83.      * @return vrací kopi sloupce
  84.      */
  85.     public double[] dejSloupec(int sloupec) {
  86.         if (sloupec >= 0 && sloupec <= pocetSloupcu) {
  87.             double[] temp = new double[pocetRadku];
  88.             for (int i = 0; i < pocetRadku; i++) {
  89.                 temp[i] = pole[i][sloupec];
  90.             }
  91.             return temp;
  92.         }
  93.         else
  94.         {
  95.             return null;
  96.         }
  97.     }
  98.  
  99.     /**
  100.      * Metoda dejVedelsiDiagonalu doda kopii vedlejsi diagonaly
  101.      *
  102.      * TODO Implementujte metodu dejVedelsiDiagonalu
  103.      */
  104.     public double[] dejVedlejsiDiagonalu() {
  105.        int delka = (this.pole.length < this.pole[0].length) ? this.pole.length : this.pole[0].length;
  106.        double[] temp = new double[delka];
  107.         for (int i = 0; i < delka; i++) {
  108.             temp[i] = this.pole[i][delka-i-1];
  109.         }
  110.         return temp;
  111.     }
  112.  
  113.     /**
  114.      * Metoda vraci transpondovanou matice
  115.      *
  116.      * TODO Doplnte implementaci transponzice obdelnikove matice
  117.      *
  118.      */
  119.     public final Matice transpose() {
  120.         Matice m = new Matice(pocetSloupcu, pocetRadku);
  121.         for (int i = 0; i < m.pocetRadku; i++) {
  122.             for (int j = 0; j < m.pocetSloupcu; j++) {
  123.                 m.pole[i][j] = this.pole[j][i];
  124.             }
  125.         }
  126.         return m;
  127.     }
  128.  
  129.     /**
  130.      * Standardni prekryta metoda toString sestavi text s prvky matice
  131.      *
  132.      * @return
  133.      */
  134.     @Override
  135.     public final String toString() {
  136.         return toString("%5.2f");
  137.     }
  138.  
  139.     /**
  140.      * Metoda poskytne textovy retezec s naformatovanymi hodnotami prvku matice.
  141.      *
  142.      * TODO Opravte sestaveni vystupniho retezce podle vasich atributu
  143.      *
  144.      */
  145.     public final String toString(String format) {
  146.         StringBuilder buffer = new StringBuilder();
  147.         for (int i = 0; i < this.pocetRadku; i++) {
  148.             for (int j = 0; j < this.pocetSloupcu; j++) {
  149.                 buffer.append(String.format(Locale.ENGLISH, format, pole[i][j]));
  150.             }
  151.             if (i < this.pocetRadku - 1) {
  152.                 buffer.append("\n");
  153.             }
  154.         }
  155.         return buffer.toString();
  156.     }
  157.    
  158.     public void naplnMatici(int min, int max)
  159.     {
  160.         for (int i = 0; i < pole.length; i++) {
  161.             for (int j = 0; j < pole[0].length; j++) {
  162.                 pole[i][j] = (double) Math.round(Math.random() * (max-min) + min);
  163.             }
  164.         }
  165.     }
  166.  
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement