Menor valor dentro da matriz - JAVA

5 respostas Resolvido
java
M

Olá pessoal, estou com dificuldade em montar o código que pegue o menor número da matriz e imprima o numero e sua posição.

Só consegui pegar o maior número. Alguém pode me ajudar com o menor numero?

Meu código:

int m[][] = new int[6][3];

int numMenor = 0;

int numMaior = 0;

int pL = 0;

int pC = 0;

Scanner sc = new Scanner(System.in);

System.out.println(“Digite os valores da matriz:”);

for(int linha = 0 ; linha < 6 ; linha++){

for(int coluna = 0; coluna < 3; coluna ++){

System.out.print(Posição " + “(” + (linha+1) + “,” + (coluna+1) + “)” + " = );

m[linha][coluna] = sc.nextInt();

if(m[linha][coluna] > numMaior){

numMaior = m [linha][coluna];

pL = linha;

pC = coluna;

}

}

}

System.out.println(Maior = " + numMaior + " na posição +(+ (pL+1) + , + (pC+1) + ));

System.out.println("Menor = " + numMenor);

5 Respostas

H

a diferença para fazer o menor número vai ser só na hora de inicializar o numMenor, porque se você só tiver números maiores que 0, então ele nunca irá trocar de número. Você pode por dentro dele o maior numero do “int” que é 2.147.483.647. depois no mesmo for do maior numero você só troca o sinal de maior pelo sinal de menor e substitui dentro do if o nome das variáveis que vão pegar os valores do menor. Lembrando que você vai ter que ter um índice de linha e coluna diferente para o maior e para o menor.

F

Deve resolver sua causa esse teste para pegar o primeiro item.

M

Muito obrigada pessoal. Acabei fazendo um else if após o if e acabou ficando assim:

m[linha][coluna] = sc.nextInt();

if(m[linha][coluna] > numMaior){

numMaior = m [linha][coluna];

pL = linha;

pC = coluna;

}

else if (m[linha][coluna]< m[0][0]){

numMenor = m[linha][coluna];

mL = linha;

mC = coluna;

}

}

}

System.out.println(Maior = " + numMaior + " na posição +"("+ (pL+1) + , + (pC+1) + ));

System.out.println(Menor = " + numMenor + " na posição +"("+ (mL+1) + , + (mC+1) + ));
H
Solucao aceita

Assim vai dar errado para pegar o menor valor, você não está comparando com o valor menor e sim com o primeiro valor inserido. Se você tiver como primeiro valor o número 5, depois tiver um com número 3 e no final um com número 4, ele vai informar que o menor valor é 4. a solução seria trocar o m[0][0] por numMenor, lembrando de inicializar esse numMenor com o maior numero que um int pode ter que foi o que eu disse em um post anterior.

M

Muito obrigada! Fiz desse jeito e deu certo.

Criado 18 de novembro de 2020
Ultima resposta 24 de nov. de 2020
Respostas 5
Participantes 3