Ajuda com matrizes

16 respostas
M

galera eu to amarrado aqui com matrizes, eu preciso percorrer uma linha de uma matriz e que a proxima linha seja o numero da coluna do menor valor da linha da matriz e que não posso percorrer uma linha já percorrida... é meio dificil explicar, espero que entendam o meu problema... aqui está um trecho do codigo:

for(i=0; i<5; i++){
			
			menor=0;
			for(j=0;j<5; j++){
				
				
				try{
				if(a[i][j]==0){
				menor=a[i][j+1];
				}}
				catch(Exception e){menor=a[i][j-1];}
				
				if(a[i][j]<menor && a[i][j]!=0){menor=a[i][j];}
				//System.out.println(menor);
				if(menor==a[i][j]){
				
					i=j-1;}
				
			}
}

16 Respostas

Guitar_Men

Cara ta meio confuso esse título e outra coisa coloca o código ai entre as tags code.

M

por exemplo, eu tenho uma matriz 5x5 com os numeros:

05382
50231
32012
83105
21250

e nela tenho que pegar o menor valor excluindo o zero(no caso da 1ª linha o 2) e já q ele está na 5ª coluna, então ao inves da proxima iteração ele ir pra 2ª, eu queria q ele fosse pra 5ª linha, e ao final não percorra nenhuma linha já percorrida. o codigo aí foi o q eu consegui fazer, não consigo passar disso…

Guitar_Men

Bom eu faria assim,
A cada iteração da linha da matriz eu verificaria se o valor que eu tenho na variavel menor eh menor do que o valor da posição atual, se sim, menor seria atribuido com esse valor senão deixa o valor que ta la, na hora que vc chegar no final dessa linha o valor do seu J seria o valor da variavel menor. Algo mais ou menos assim. Agora vem ca esse seu código da algum erro ou simplesmente não faz o que propõe ??

P

Você precisa de um auxiliar para armazenar o valor encontrado antes de coloca-ló em outro lugar na matriz senão logo sua matriz estará preenchida com ele.

M

Guitar_Men:
Bom eu faria assim,
A cada iteração da linha da matriz eu verificaria se o valor que eu tenho na variavel menor eh menor do que o valor da posição atual, se sim, menor seria atribuido com esse valor senão deixa o valor que ta la, na hora que vc chegar no final dessa linha o valor do seu J seria o valor da variavel menor. Algo mais ou menos assim. Agora vem ca esse seu código da algum erro ou simplesmente não faz o que propõe ??

tipo o codigo acho q tá fazendo o q tu disse e tá rodando sem problemas, só q por exemplo nessa matriz q eu usei ele acha o valor 2 como menor na 1ª linha e depois vai pra linha 5, aí encontra o 1 como valor menor aí depois dai num sei o q acontece…

beginer

Tens que explicar melhor, ainda não consegui entender. . .

M

mas o meu auxiliar é o menor.

Guitar_Men

Vc ta usando qual IDE ?? Meu conselho, papel, lápis e Debug na veia meu… só assim vc vai se achar… Outra dica, troca o nome dessas variaveis de I e J para Linha e Coluna, aposto que isso vai te dar uma mão na hora de debugar…

M

olhem essa matriz:

05382
50231
32012
83105
21250

agora eu percorro a primeira linha, encontro o 2 como menor e a partir do numero da coluna dele, q no caso é 4 pq o contador começa de 0, eu vou pra linha 4, ou seja, a proxima linha q eu deveria ir é o numero da coluna do menor valor da linha anterior! o codigo tá fazendo isso ele encontra o valor 2 depois vai pra quinta coluna(4 no contador) aí de novo encontra o 1 e vai para 2ª linha, só q depois dai o resultado da soma dos menores dá 7 num sei pq… até onde eu falei o resultado dá 2+1=3

gibaholms

Cara, vou escrever aki direto, se tiver alum erro não liga não, pretendo mostrar mais a base do raciocinio:

List<Integer> linhasQueJaForam = new List<Integer>();
boolean continua = true;
int i = 0;
while (continua) {
  linhasQueJaForam.add(i);   
  int menor = matriz[i][0];
  for(int j = 0; i < matriz[i].length; j++) {
      if(matriz[i][j] < menor) menor = matriz[i][j];
  }
  
  //Verificar se a proxima linha  foi verificada
  //se não foi, i = menor;
  //se  foi, pegar outra linha
 //se linhasQueJaForam.length == matriz.length então continua = false;
 
}

eh mais ou menos por ai cara!

Estou meio sem tempo, mas acho q já dá uma clareada… abraço

beginer

120
456
120

Ou seja pretendes um programa que ao percorrer as linhas da matriz encontre o numero menor …
Neste caso 1 que se encontra 1 linha e 1 coluna .

A 2.ª parte ainda não percebi o que pretendes, será uma procura e ordenação de matrizes ?

http://www.guj.com.br/posts/list/82810.java

ou então da uma vista de olhos nestes ficheiros:


P

tem razão!!
se vc esta querendo obter o menor valor da matriz toda basta inicializar seu “nemor” fora do for mais externo
ele dentro do for a cada linha ele e zerado e vc perde a análise da linha anterior, se vc esta querendo o menor de cada linha crie uma outra coluna na matriz para armazenar o seu menor ao final de de cada linha e mantenha a inicialização do seu menor onde está.

M

tipo, é verdade q eu to querendo o menor de cada linha, mas ele naum vai ser perdido naum, pq eu to mais pra frente guardando-o em uma variavel soma q a cada vez q ele mude de linha ele tá sendo guardado e somado com os outros menores e sobre a outra parte é q eu tenho q ir pra linha de acordo com o nº da coluna do menor valor. o codigo do gibaholms tá parecendo ser o q eu quero, e o for do j dele tá parecido com o meu, vou tentar entende-lo para q possa adaptar ao meu.

beginer

http://jedi.wv.com.br/course/view.php?id=4

Lição 6 - Algoritmos de Ordenação

Objetivos:

Explicar os algoritmos utilizados em ordenação por inserção, ordenação por seleção, Merge Sort e Quick Sort
Implementar seu próprio algoritmo utilizando essas técnicas
Apostila referente à lição 06
Apresentação referente à lição 06
Experiências referentes à lição 06
Vídeo-aula da Lição 6

M

vlw!!! vou dá uma olhada.

M

tentei, mas num sai do canto. num sei como é q vou percorrer uma linha e depois dizer se ela já foi percorrida ou naum…

Criado 24 de março de 2008
Ultima resposta 24 de mar. de 2008
Respostas 16
Participantes 5