Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package ipalp_cv09;
- /**
- *
- * @author st55431
- */
- public class Matice {
- public final static int MaxRadek = 10;
- public final static int MaxSloupec = 10;
- public final int[][] pole; //lock data.
- public int[][] a;
- public int[][] b;
- private final int pocetRadku;
- private final int pocetSloupcu;
- public Matice(int pocetRadku, int pocetSloupcu) {
- if (0 < pocetRadku && 0 < pocetSloupcu && pocetRadku <= MaxRadek && pocetSloupcu <= MaxSloupec) {
- this.pole = new int[pocetRadku][pocetSloupcu];
- this.pocetRadku = pocetRadku;
- this.pocetSloupcu = pocetSloupcu;
- } else {
- this.pole = null;
- this.pocetRadku = 0;
- this.pocetSloupcu = 0;
- }
- }
- public Matice(int rozmer) {
- this(rozmer, rozmer);
- }
- public int getPocetRadku() {
- return pocetRadku;
- }
- public int getPocetSloupcu() {
- return pocetSloupcu;
- }
- public String toString(int[][] toPrint) {
- StringBuilder str = new StringBuilder();
- for (int i = 0; i < pocetRadku; i++) {
- for (int j = 0; j < pocetSloupcu; j++) {
- str.append(String.format("%3d ", toPrint[i][j]));
- }
- str.append('\n');
- }
- return str.toString();
- }
- @Override
- public String toString() {
- StringBuilder str = new StringBuilder();
- for (int i = 0; i < pocetRadku; i++) {
- for (int j = 0; j < pocetSloupcu; j++) {
- str.append(String.format("%4d ", pole[i][j]));
- }
- str.append('\n');
- }
- return str.toString();
- }
- public int[][] vynulujDiagonalu(int[][] in) {
- for (int i = 0; i < in.length; i++) {
- in[i][i] = 0;
- }
- return in;
- }
- public int[][] vynulujSloupec(int sloupec, int[][] in) {
- for (int i = 0; i < in.length; i++) {
- in[i][sloupec] = 0;
- }
- return in;
- }
- public String otocMatici() {
- StringBuilder str = new StringBuilder();
- for (int i = 0; i < pocetRadku; i++) {
- for (int j = 0; j < pocetSloupcu; j++) {
- str.append(String.format("%3d ", pole[j][i]));
- }
- str.append('\n');
- }
- return str.toString();
- }
- public int generujCislo(int min, int max) {
- return (int) Math.round(Math.random() * (max - min) + min);
- }
- public void naplnNahodne(int min, int max) {
- for (int i = 0; i < pole.length; i++) {
- for (int j = 0; j < pole[i].length; j++) {
- pole[i][j] = generujCislo(min, max);
- }
- }
- }
- static Matice vytvor(int[][] data) {
- Matice m = new Matice(data.length, data[1].length);
- for (int i = 0; i < data.length; i++) {
- System.arraycopy(data[i], 0, m.pole[i], 0, m.pocetSloupcu);
- }
- return m;
- }
- public Matice plus(Matice m2) {
- Matice m1 = this; //Referenční promněná
- try {
- Matice m3 = new Matice(pocetRadku, pocetSloupcu);
- for (int i = 0; i < pocetRadku; i++) {
- for (int j = 0; j < pocetSloupcu; j++) {
- m3.pole[i][j] = m1.pole[i][j] + m2.pole[i][j];
- }
- }
- return m3;
- } catch (Exception e) {
- return null;
- }
- }
- public Matice minus(Matice m2) {
- Matice m1 = this; //Referenční promněná
- try {
- Matice m3 = new Matice(pocetRadku, pocetSloupcu);
- for (int i = 0; i < pocetRadku; i++) {
- for (int j = 0; j < pocetSloupcu; j++) {
- m3.pole[i][j] = m1.pole[i][j] - m2.pole[i][j];
- }
- }
- return m3;
- } catch (Exception e) {
- return null;
- }
- }
- public Matice vynasob(Matice m2) {
- Matice m1 = this; //Referenční promněná
- Matice m3 = new Matice(m1.pole.length, m2.pole[0].length);
- if (m1.pole.length == m2.pole[0].length) {
- for (int i = 0; i < m1.pole.length; i++) {
- for (int j = 0; j < m2.pole[0].length; j++) {
- int pom = 0;
- for (int k = 0; k < m2.pole.length; k++) {
- pom += (m1.pole[i][k] * m2.pole[k][j]);
- }
- m3.pole[i][j] = pom;
- }
- }
- return m3;
- } else {
- return null;
- }
- }
- public int najdiMaxNadVedlejsiDiagonalou() {
- int max = Integer.MIN_VALUE; //Nastavení minimální hodnoty
- for (int i = 0; i < pocetRadku - 1; i++) {
- for (int j = 0; j < pocetSloupcu - (i + 1); j++) {
- if (pole[i][j] > max) {
- max = pole[i][j];
- }
- }
- }
- return max;
- }
- public int najdiMinPodHlavniDiagonalou() {
- int min = Integer.MAX_VALUE; //Nastavení minimální hodnoty
- for (int i = 1; i < pocetRadku; i++) {
- for (int j = 0; j < i; j++) {
- if (pole[i][j] < min) {
- min = pole[i][j];
- }
- }
- }
- return min;
- }
- public int najdiMaxNadHlavniDiagonalou() {
- int max = Integer.MIN_VALUE; //Nastavení minimální hodnoty
- for (int i = 0; i < pocetRadku - 1; i++) {
- for (int j = i + 1; j < pocetSloupcu; j++) {
- if (pole[i][j] > max) {
- max = pole[i][j];
- }
- }
- }
- return max;
- }
- public int najdiMinPodVedlejsiDiagonalou() {
- int min = Integer.MAX_VALUE; //Nastavení minimální hodnoty
- for (int i = 1; i < pocetRadku; i++) {
- for (int j = pocetSloupcu - i; j < pocetSloupcu; j++) {
- if (pole[i][j] < min) {
- min = pole[i][j];
- }
- }
- }
- return min;
- }
- public void prictiRadek(int kam, int odkud) {
- if (kam < pocetRadku && odkud < pocetRadku) {
- System.out.println("Přičtení řádku " + odkud + " do: " + kam + "\n");
- for (int i = 0; i < pocetSloupcu; i++) {
- pole[kam][i] += pole[odkud][i];
- }
- } else {
- System.out.println("Index řádků je mimo index pole! Pole zůstáva bezezměny: ");
- }
- }
- public void prictiSloupec(int kam, int odkud) {
- if (kam < pocetRadku && odkud < pocetRadku) {
- System.out.println("Přičtení sloupce " + odkud + " do: " + kam + "\n");
- for (int i = 0; i < pocetRadku; i++) {
- pole[i][kam] += pole[i][odkud];
- }
- } else {
- System.out.println("Index sloupců je mimo index pole! Pole zůstáva bezezměny: ");
- }
- }
- int[] dejRadekSMaxSouctem() {
- int max[] = new int[pocetSloupcu];
- int maxSoucet = Integer.MIN_VALUE;
- int soucet;
- int radek = 0;
- for (int i = 0; i < pocetRadku; i++) {
- soucet = 0;
- for (int j = 0; j < pocetSloupcu; j++) {
- soucet += pole[i][j];
- }
- if (soucet > maxSoucet) {
- radek = i;
- maxSoucet = soucet;
- }
- }
- System.arraycopy(pole[radek], 0, max, 0, pocetSloupcu);
- return max;
- }
- public int[] hlavniDiagonala(){
- //Lokální proměná
- int delka = (pocetRadku<pocetSloupcu)?pocetRadku:pocetSloupcu; //podmínka zkráceně.
- //Referenční promněná
- int[] poleDiagonala = new int[delka];
- for (int i = 0; i<delka;i++)
- {
- poleDiagonala[i] = this.pole[i][i];
- }
- return poleDiagonala;
- }
- public int[] vedlejsiDiagonala(){
- //Lokální proměná
- int delka = (pocetRadku<pocetSloupcu)?pocetRadku:pocetSloupcu; //podmínka zkráceně.
- //Referenční promněná
- int[] poleDiagonala = new int[delka];
- int y = 0;
- for (int i = 0; i < delka-1; i++) {
- y = delka - i-1;
- poleDiagonala[i] = this.pole[i][y];
- }
- return poleDiagonala;
- }
- public int[][] transponujMatici() {
- if (pocetRadku == pocetSloupcu) {
- Matice n = new Matice(pocetRadku, pocetSloupcu);
- for (int i = 0; i < pocetRadku; i++) {
- for (int j = 0; j < pocetSloupcu; j++) {
- n.pole[j][i] = this.pole[i][j];
- }
- }
- return n.pole;
- }
- else
- {
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment