Ir ao conteúdo
  • Cadastre-se

Java Determinar um padrão existente na imagem ou não


Posts recomendados

Boa noite, gostaria de que alguém olhasse meu código e me falasse o que está errado, já tentei de várias maneiras e ele não dá os resultados certos.

 

Enunciado do problema:
Uma imagem em preto e branco, de tamanho m x n, pode ser representada por uma matriz cujos elementos assumem valores no conjunto {0,1}. Dado um padrão representado por uma matriz 3x3 também assumindo valores em {0,1}, escreva um programa que determine se o padrão existe ou não na imagem.

 

Matriz exemplo:
0 0 1 0 0 0 0 1 0
0 1 1 1 1 1 1 0 0
0 0 1 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0
0 0 0 0 0 1 0 0 0
1 1 1 0 1 0 1 0 0
1 0 1 0 0 0 0 0 0
1 1 1 0 0 1 1 1 0

 

Matriz padrão:
0 1 0
1 1 1
0 1 0


 

package javaapplication27;
import java.util.Scanner;
public class JavaApplication27 {
    public static void main(String[] args) {
        Scanner dd = new Scanner(System.in);
        int M;
        int N;
        int igual = 0;
        System.out.println("Informe o tamanho da matriz (X,Y)");
        M = dd.nextInt();
        N = dd.nextInt();
        int matriz[][] = new int[M][N];
        System.out.println("Insira a matriz:");
        for (int entrada1 = 0; entrada1 < matriz.length; entrada1++) {
            for (int entrada2 = 0; entrada2 < matriz[entrada1].length; entrada2++) {
                matriz[entrada1][entrada2] = dd.nextInt();
            }
        }
        int padrão[][] = new int[3][3];
        System.out.println("Insira a matriz de consulta:");
        for (int entrada11 = 0; entrada11 < padrão.length; entrada11++) {
            for (int entrada22 = 0; entrada22 < padrão[entrada11].length; entrada22++) {
                padrão[entrada11][entrada22] = dd.nextInt();
            }
        }
        for (int teste1 = 0; teste1 < matriz.length-2; teste1++) { //coloquei menos 2 para ele não ultrapassar a matriz
            for (int teste2 = 0; teste2 < matriz[teste1].length-2; teste2++) { // mesma coisa vale
                if ((matriz[teste1][teste2] == padrão[0][0])
                        && (matriz[teste1][teste2 + 1] == padrão[0][1])
                        && (matriz[teste1][teste2 + 2] == padrão[0][2])
                        && (matriz[teste1 + 1][teste2] == padrão[0][0])
                        && (matriz[teste1 + 1][teste2 + 1] == padrão[1][1])
                        && (matriz[teste1 + 1][teste2 + 2] == padrão[2][2])
                        && (matriz[teste1 + 2][teste2] == padrão[0][0])
                        && (matriz[teste1 + 2][teste2 + 1] == padrão[1][1])
                        && (matriz[teste1 + 2][teste2 + 2] == padrão[2][2])) {
                    igual++;
                }
            }
        }
        if (igual > 0) {
            System.out.println("Existe padrão!" + igual);
        } else {
            System.out.println("Não existe padrão!" + igual);
        }
    }
}

No caso era pra mostrar que existe 1 padrão, mas no programa mostra que não existe padrão, por isso gostaria que alguém revisasse meu código e olhasse o erro. Agradeceria muito!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!