Matrizes em Java

1 resposta
java
M

Estou tentando resolver esse problema que é escrever um programa que receba uma matriz de bits {0,1}
representando uma imagem e uma outra matriz de bits qualquer. Basicamente o programa deve identificar se a segunda matriz está contida na primeira. Segue meu código até o momento:

public class MatrizAtividade {

	public static void main(String[] args) {

		// Instanciando a 1ª matriz 3 x 4
		int matA[][] = new int[3][4];

		matA[0][0] = 0;
		matA[0][1] = 1;
		matA[0][2] = 1;
		matA[0][3] = 1;

		matA[1][0] = 0;
		matA[1][1] = 0;
		matA[1][2] = 1;
		matA[1][3] = 0;

		matA[2][0] = 1;
		matA[2][1] = 1;
		matA[2][2] = 1;
		matA[2][3] = 0;

		// Instanciando a 2ª matriz 2 x 2
		int matB[][] = new int[2][3];

		matB[0][0] = 0;
		matB[0][1] = 0;
		matB[0][2] = 1;

		matB[1][0] = 1;
		matB[1][1] = 1;
		matB[1][2] = 0;

		System.out.println("Matriz A:");
		// Esse 1º FOR varre as linhas da Matriz A
		for (int i = 0; i < matA.length; i++) {
			// Esse 2º FOR varre as colunas da Matriz A
			for (int j = 0; j < matA[i].length; j++) {
				System.out.print(matA[i][j] + " | ");
			}
			System.out.println();
		}
		System.out.println("Matriz B:");
		// Esse 1º FOR varre as linhas da Matriz B
		for (int i = 0; i < matB.length; i++) {
			// Esse 2º FOR varre as colunas da Matriz B
			for (int j = 0; j < matB[i].length; j++) {
				System.out.print(matB[i][j] + " | ");
			}
			System.out.println();
		}
		System.out.println("Resultado:");
		for (int i = 0; i < matA.length; i++) {
			for (int j = 0; j < matA[i].length; j++)
				if (matA[i][j] == matB[i][j]) {
					System.out.println(matB[i][j] + " | ");
				}
		}
	}
}

A saída tá sendo essa:

Matriz A:
0 | 1 | 1 | 1 |
0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 |
Matriz B:
0 | 0 | 1 |
1 | 1 | 0 |
Resultado:
0 |
1 |

Então, onde tá meu erro? sou iniciante, estou aprendendo ainda a sintaxe da linguagem.

1 Resposta

igorventurelli

Amigo, não entendi o output de “Resultado”…
Se a questão é identificar se uma matriz está contida na outra a resposta não deveria ser apenas sim/não?

Sobre a solução: acredito que verificação não esteja plenamente correta.
Segundo o que você implementou, a resposta só será verdadeira se os bits das duas matrizes tiverem os mesmos valores nas mesmas posições.
Exemplo:
Sua implementação retornará verdadeiro nessa condição:

Matriz A:
0 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 |

Matriz B:
0 | 0 | 1 |
1 | 1 | 0 |

Mas retornará falso se a condição for:

Matriz A:
1 | 1 | 1 | 0 |
0 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |

Matriz B:
0 | 0 | 1 |
1 | 1 | 0 |

Entendeu?

Ás vezes eu que intepretei mal teu código mas acho que é isso mesmo… hehe :slight_smile:

O lance tem mais a ver com lógica do que com java em si.

Espero ter ajudado!

Abs!

Criado 26 de setembro de 2016
Ultima resposta 27 de set. de 2016
Respostas 1
Participantes 2