Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavo Rodrigues Torre

Mostrar valores repetidos na Matriz

Recommended Posts

Estou com dificuldades em implementar este algoritmo também

 

Leia uma matriz 3x3 de números inteiros e em seguida escreva cada valor presente na matriz e quantas vezes o mesmo aparece na matriz.

 

O meu código apresenta erro também

 

import javax.swing.JOptionPane;

public class Matrizacha {
	public static void main(String args[]) {
		int num[][] = new int[3][3];
		int num2[][] = new int[3][3];
		int i,j;
		int iguais=0;
		
		//entrar com valores da matriz
		for(i=0;i<3;i++) {
			for(j=0;j<3;j++)  
			num[i][j]=Integer.parseInt(JOptionPane.showInputDialog("Entre com os valores da linha" +i + " e coluna " +j));
			num2[i][j] = num[i][j];
		}
		
			//verifica elementos repetidos na matriz
			for(i=0;i<3;i++) {
				for(j=0;j<3;j++) { 
			if (num[i][j]== num2[i][j]) 
			iguais++;
				}
		}
		
		JOptionPane.showMessageDialog(null,"A matriz resultante eh:");
		
		//Mostrar a matriz resultante
		for (i = 0; i < 3; i++) {
			for (j = 0; j < 3; j++) 
				System.out.print("\t"+ num[i][j]);
				System.out.print("\n");
			}
	System.out.println("A matriz apresenta elementos iguais: " +iguais);
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dessa vez vou apresentar a idéia e deixá-lo quebrar a cabeça. Primeiramente você apenas preencherá uma matriz de inteiros com os valores informados pelo usuário.

for(i=0;i<3;i++) {
   for(j=0;j<3;j++) {
      num[i][j]=Integer.parseInt(JOptionPane.showInputDialog("Entre com os valores da linha" +i + " e coluna " +j));
    }
}

Para que você possa descobrir quais números estão repetidos e quantas vezes foram repetidos seria ideal que você ordenasse os valores numéricos dentro da matriz. Exemplo de entrada: 153;231;512 Depois de ordenado (você pode jogar os valores ordenados num vetor[9]) o resultado seria: 1,1,1,2,2,3,3,5,5

 

Depois de ordenados você verifica quais números foram repetidos percorrendo o vetor com valores os ordenados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu agora fiz assim:

 

import javax.swing.JOptionPane;

public class Matrizacha {
	public static void main(String args[]) {
		int num[][] = new int[3][3];
		int vet[] = new int [8];
		int vet2[] = new int [8];
		int aux,k=0,n;
		int i,j;
		//int iguais=0;
		
		  for(i=0;i<3;i++) {
		    for(j=0;j<3;j++) {
		        num[i][j]=Integer.parseInt(JOptionPane.showInputDialog("Entre com os valores da linha" +i + " e coluna " +j));
		        vet[k]=num[i][j]; 
		        k++;
		         }
		  }
		 
		  for(i=0;i<9;i++)
		  vet2[i]=1;

		  // ordena o vector
		  for(i=0;i<k;i++)  {
		         for(j=0;j<k-1;j++) {
		        if(vet[j]>vet[j+1])
		        {
		          aux=vet[j];
		          vet[j]=vet[j+1];
		          vet[j+1]=aux;
		        }
		         }
		  }
		  
		  n=k;
		 
		  for(k=0;k<n-1;k++) {
		    for(i=k;i<n;i++) {
		          if(vet[k]==vet[i+1]) {
		         vet2[k]++;
		         for(j=i+1;j<n-1;j++)
		                vet[j]=vet[j+1];
		         n--;
		         i--;
		          }
		         }
		   }
		  
		    for(i=0;i<n+1;i++)
			JOptionPane.showMessageDialog(null,"O elemento" +vet[i] + "se repete" +vet2[i] + "Vezes");
		   
		}
}


 

Mas continua com erro

Agora da exceção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando ocorrer uma excessão, poste a mensagem de excessão também.

De cara já posso dizer que o problema é estouro do limite do vetor. Uma matriz [3,3] é o mesmo que 3*3, ou seja, a matriz tem nove elementos.

int num[][] = new int[3][3]; 
int vet[] = new int [9]; 
int vet2[] = new int [9]; 
Apesar de funcionar, não vejo a necessidade de se criar dois vetores (int vet[9] e int vet2[9]). Um só já resolveria o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcinou

 

Só que na hora de mostrar a mensagem no final mostra que o elemento se repetiu 10 vezes na Matriz.

 

Mas a matriz não tem 9 elementos?

 

 

Quando ocorrer uma excessão, poste a mensagem de excessão também.

De cara já posso dizer que o problema é estouro do limite do vetor. Uma matriz [3,3] é o mesmo que 3*3, ou seja, a matriz tem nove elementos.

int num[][] = new int[3][3]; 
int vet[] = new int [9]; 
int vet2[] = new int [9]; 
Apesar de funcionar, não vejo a necessidade de se criar dois vetores (int vet[9] e int vet2[9]). Um só já resolveria o problema.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcinou

 

Só que na hora de mostrar a mensagem no final mostra que o elemento se repetiu 10 vezes na Matriz.

 

Mas a matriz não tem 9 elementos?

 

Acontece que você está fazendo o último laço com um valor a mais.

O certo é você fazer o laço da seguinte forma:

for(i=0;i<n;i++) { // antes era for(i=0;i<n+1;i++)
    JOptionPane.showMessageDialog(null,"O elemento" +vet[i] + "se repete" +vet2[i] + "Vezes");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.