Obter os maiores números de cada linha e os menores números de cada coluna da matriz
9 respostas
T
tiger_9
Boa noite galera do forum, estou precisando muito da ajuda de vcs. Sou iniciante na área de java. Tenho tentado de todas as maneiras responder uma questão que o professor passou, mas não tenho dito sucesso. Sempre da um erro. Essa é a pergunta: Construa um algoritmo que leia um conjunto de números inteiros para preencher uma matriz 10x10 e a parti dai, gere um vetor com os maiores elementos de cada linha e outro vetor com os menores elementos de cada coluna
O meu algoritmo esta dando os números certos. Coloquei 3x3 para facilitar. Abaixo está o código:
intcont=1,maior=0,menor=999;int[][]matriz=newint[3][3];int[]linha=newint[3];int[]coluna=newint[3];for(inti=0;i<3;i++){for(intj=0;j<3;j++){System.out.print("Digite o "+(cont++)+"º número:");Scannersc=newScanner(System.in);matriz[i][j]=sc.nextInt();linha[i]=matriz[i][j];coluna[j]=matriz[i][j];}}System.out.println("\rNovo vetor com os elementos maiores de cada linha");for(inti=0;i<3;i++){if(linha[i]>maior){maior=linha[i];System.out.print(+maior+"\t");}}System.out.println("\rNovo vetor com os elementos menores de cada coluna");for(intj=0;j<3;j++){if(coluna[j]<menor){menor=coluna[j];System.out.print(+menor+"\t");}}}}
Ola tiger.
Elaborei um aqui em casa agora, para te ajudar, olhe bem atentamente, entenda o código
porque se você não entender de logica, você terá menos oportunidades no mundo da informática.
se esforce ao máximo para resolver os exercícios, pois na carreira de informática, exercícios desse tipo são muito comuns(esse ainda é considerado bem leve).
boa sorte.
publicstaticvoidmain(String[]args){int[][]matriz=newint[10][10];// for de atribuição de valores para a matrizfor(inti=0;i<10;i++){for(intj=0;j<10;j++){matriz[i][j]=(int)((Math.random()*100)+1);// gerando numero aleatorioSystem.out.print(matriz[i][j]+" | ");// mostrando}System.out.println("");}System.out.println("");int[]maioresDeCadaLinha=newint[10];intaux=0;// descobre qual o maior numero de cada linhafor(inti=0;i<10;i++){for(intj=0;j<10;j++){aux=Math.max(aux,matriz[i][j]);}maioresDeCadaLinha[i]=aux;aux=0;System.out.println("Maior da "+i+"º linha é "+maioresDeCadaLinha[i]);}System.out.println("");int[]menoresDeCadaColuna=newint[10];int[]aux1=newint[10];// descobre qual o menor numero de cada colunafor(inti=0;i<10;i++){for(intj=0;j<10;j++){aux1[j]=matriz[i][j];if(i==0){menoresDeCadaColuna[j]=aux1[j];}if(j==9){for(intj2=0;j2<10;j2++){menoresDeCadaColuna[j2]=Math.min(aux1[j2],menoresDeCadaColuna[j2]);}}}}//apenas mostra os menores numero de cada colunafor(inti=0;i<menoresDeCadaColuna.length;i++){System.out.println("Menor da "+i+"º coluna é "+menoresDeCadaColuna[i]);}}
T
tiger_9
Ola ZeTripe. Anteriormente eu tinha feito com o Math, mas o professor não aceitou. Ele disse que eu teria que fazer o exercício sem usa-lo. Porém não achei nada na net que ensinasse a fazer dessa forma. Teria como me ensinar fazer essa questão se utilizar o Math?
ZeTripe
Mais isso e bem fácil, repare e note
o método Math.Max(2,3) você passa 2 números como parâmetro e ele retorna o numero que for maior, o Math.min(2,3) mesma coisa, mais retorna o menor então no caso é a mesma coisa de você fazer isso
//descobrequalomaiornumerodecadalinhafor(inti=0;i<10;i++){for(intj=0;j<10;j++){if(aux<matriz[i][j]){aux=matriz[i][j];}}maioresDeCadaLinha[i]=aux;aux=0;System.out.println("Maior da "+i+"º linha é "+maioresDeCadaLinha[i]);}
ZeTripe agora eu não entendi uma coisa. Porque o outro que verifica o menor valor tem dois if?
ZeTripe
O primeiro if é o de i=0
se o if for = 0 significa que é a primeira volta do for,
Note que o
int[]menoresDeCadaColuna=newint[10];
é iniciado sem valor nenhum, para que eu possa compara-lo com alguma outra variável ele não pode ser nulo.
então enquanto o i=0 haverá valores nulo dentro do menoresDeCadaColuna .
agora o o if j=9, o j só fica igual a 9 quando eu li todos os valores de um linha da matriz
ou seja 1 valor de cada coluna certo?.
e no for dentro do if j=9 tem um for, que vai comparar o valores da linha lida com os valores que estão por enquanto como menor da coluna da matriz.
eu acho meio difícil explicar pro escrita, mas espero que você tenha intendo algo.
T
tiger_9
O código que acha o menor valor ta dando erro aqui. Não entendo
T
tiger_9
ZeTripe tem como postar o código completo?
ZeTripe
Aqui funciona parfeitamente
publicclassMatriz{/** * @param args */publicstaticvoidmain(String[]args){int[][]matriz=newint[10][10];// for de atribuição de valores para a matrizfor(inti=0;i<10;i++){for(intj=0;j<10;j++){matriz[i][j]=(int)((Math.random()*100)+1);// gerando numero aleatorioSystem.out.print(matriz[i][j]+" | ");// mostrando}System.out.println("");}System.out.println("");int[]maioresDeCadaLinha=newint[10];intaux=0;// descobre qual o maior numero de cada linhafor(inti=0;i<10;i++){for(intj=0;j<10;j++){if(aux<matriz[i][j]){aux=matriz[i][j];}}maioresDeCadaLinha[i]=aux;aux=0;System.out.println("Maior da "+i+"º linha é "+maioresDeCadaLinha[i]);}System.out.println("");int[]menoresDeCadaColuna=newint[10];int[]aux1=newint[10];// descobre qual o menor numero de cada colunafor(inti=0;i<10;i++){for(intj=0;j<10;j++){aux1[j]=matriz[i][j];if(i==0){menoresDeCadaColuna[j]=aux1[j];}if(j==9){for(intj2=0;j2<10;j2++){if(menoresDeCadaColuna[j2]>aux1[j2]){menoresDeCadaColuna[j2]=aux1[j2];}}}}}//apenas mostra os menores numero de cada colunafor(inti=0;i<menoresDeCadaColuna.length;i++){System.out.println("Menor da "+i+"º coluna é "+menoresDeCadaColuna[i]);}}}
T
tiger_9
Valeu ZeTripe :thumbup:
Suas explicações me deram uma luz. Estou começando a entender melhor. O que ta faltando é eu aperfeiçoar
a minha lógica. Obrigado pela ajuda