Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hledani;
- import java.io.InputStream;
- import java.util.Arrays;
- import java.util.Scanner;
- /**
- *
- * @author Jakub Hvězda
- */
- class Matice {
- private int[][] data;
- protected int radky;
- protected int sloupce;
- int max = 2;
- public Matice(int vyska, int sirka) {
- if (vyska > 0 && sirka > 0) {
- this.data = new int[vyska][sirka];
- this.radky = vyska;
- this.sloupce = sirka;
- } else {
- //chyba
- }
- }
- private static String udelejMezeru(long num) {
- String mezery = "";
- for (long i = 0; i < num; i++) {
- mezery += " ";
- }
- return mezery;
- }
- public void setPrvek(int radek, int sloupec, int prvek) {
- this.data[radek][sloupec] = prvek;
- }
- public void NaplnMatici(Scanner sc) {
- for (int i = 0; i < radky; i++) {
- for (int j = 0; j < sloupce; j++) {
- int prvek = sc.nextInt();
- this.setPrvek(i, j, prvek);
- int max2 = String.valueOf(this.getPrvek(i, j)).length();
- if (max2 > max) {
- max = max2;
- }
- }
- }
- }
- public int getPrvek(int radek, int sloupec) {
- if (radek >= 0 && radek < radky && sloupec >= 0 && sloupec < sloupce) {
- return data[radek][sloupec];
- } else {
- return 0;
- }
- }
- @Override
- public String toString() {
- String matice = "";
- for (int i = 0; i < radky; i++) {
- for (int j = 0; j < sloupce; j++) {
- matice += udelejMezeru(max - String.valueOf(this.getPrvek(i, j)).length() + 1);
- matice += this.getPrvek(i, j);
- }
- matice += "\n";
- }
- return matice;
- }
- @Override
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Matice other = (Matice) obj;
- if (!Arrays.deepEquals(this.data, other.data)) {
- return false;
- }
- return true;
- }
- public int getPocetVyskytu(Matice m) {
- int vyskyty = 0;
- for (int i = 0; i < this.radky - m.radky + 1; i++) {
- for (int j = 0; j < this.sloupce - m.sloupce + 1; j++) {
- Matice pomocna = new Matice(m.radky, m.sloupce);
- for (int u = i; u < pomocna.radky + i; u++) {
- for (int p = j; p < pomocna.sloupce + j; p++) {
- // System.out.println(i+"+"+j+"+"+u+"+"+p);
- pomocna.setPrvek(u - i, p - j, this.data[u][p]);
- }
- }
- if (m.equals(pomocna)) {
- vyskyty++;
- }
- }
- }
- return vyskyty;
- }
- }
- public class Hledani {
- static int zadejVelikost(Scanner sc, String vstupText, int horniMez, int dolniMez, String chyba) {
- System.out.println(vstupText);
- int cislo = sc.nextInt();
- while (cislo > horniMez || cislo < dolniMez) {
- System.out.println(chyba);
- cislo = sc.nextInt();
- }
- return cislo;
- }
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- // zadani hledane matice
- int radky = zadejVelikost(sc,"Zadejte velikost hledane matice (radek, sloupec):", Integer.MAX_VALUE, 1, "Chyba! Opakujte zadani.");
- int sloupce = zadejVelikost(sc,"", Integer.MAX_VALUE, 0, "Chyba! Opakujte zadani.");
- Matice hledana = new Matice(radky, sloupce);
- System.out.println("Zadejte" + " " + radky * sloupce + " " + "prvky matice:");
- hledana.NaplnMatici(sc);
- int pocetProhledavanych = zadejVelikost(sc,"Zadejte pocet prohledavanych matic:", Integer.MAX_VALUE, 1, "Chyba! Opakujte zadani.");
- Matice[] zadaneMatice = new Matice[pocetProhledavanych];
- for (int i = 0; i < pocetProhledavanych; i++) {
- int radky2 = zadejVelikost(sc,("Zadejte velikost" + " "+(i+1)+ ".prohledavane matice (radek, sloupec):"), Integer.MAX_VALUE, 1, "Chyba! Opakujte zadani." );
- int sloupce2 = zadejVelikost(sc,"", Integer.MAX_VALUE, 1, "Chyba! Opakujte zadani." );
- Matice zadana = new Matice(radky2, sloupce2);
- System.out.println("Zadejte" +" " +radky2*sloupce2 + " " + "prvku matice:");
- zadana.NaplnMatici(sc);
- zadaneMatice[i] = zadana;
- }
- System.out.println("Hledana matice:");
- System.out.print(hledana);
- for (int i = 0; i < zadaneMatice.length; i++) {
- System.out.println((i+1)+".prohledavana matice: ");
- System.out.print(zadaneMatice[i]);
- }
- System.out.println("---Vysledky---");
- int hledani = 0;
- int identickych = 0;
- for (int i = 0; i < zadaneMatice.length; i++) {
- if(hledana.equals(zadaneMatice[i])){
- identickych++;
- } else {
- hledani++;
- }
- }
- System.out.println("- hledani podmatic:"+" "+hledani +", identickych matic:" + identickych);
- for (int i = 0; i < zadaneMatice.length; i++) {
- if(hledana.equals(zadaneMatice[i])) {
- System.out.println((i+1) + ".matice je identicka s hledanou matici");
- } else {
- int pocet = zadaneMatice[i].getPocetVyskytu(hledana);
- System.out.println((i+1) + ".matice obsahuje hledanou matici" +" "+pocet+"x");
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment