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:
[code] int cont=1,maior=0,menor=999;
int[][] matriz = new int[3][3];
int[] linha = new int[3];
int[] coluna = new int[3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print("Digite o "+(cont++)+"º número:");
Scanner sc = new Scanner(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(int i=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(int j=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.
[code]public static void main(String[] args) {
int[][] matriz = new int [10] [10];
// for de atribuição de valores para a matriz
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
matriz[i][j] = (int)((Math.random()*100) + 1); // gerando numero aleatorio
System.out.print(matriz[i][j] + " | "); // mostrando
}
System.out.println("");
}
System.out.println("");
int[] maioresDeCadaLinha = new int[10];
int aux = 0;
// descobre qual o maior numero de cada linha
for (int i = 0; i < 10; i++) {
for (int j = 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 = new int[10];
int[] aux1 = new int[10];
// descobre qual o menor numero de cada coluna
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
aux1[j] = matriz[i][j];
if (i==0){
menoresDeCadaColuna[j] = aux1[j];
}
if (j==9){
for (int j2 = 0; j2 < 10; j2++) {
menoresDeCadaColuna[j2] = Math.min(aux1[j2], menoresDeCadaColuna[j2]);
}
}
}
}
//apenas mostra os menores numero de cada coluna
for (int i = 0; i < menoresDeCadaColuna.length; i++) {
System.out.println("Menor da "+ i + "º coluna é " + menoresDeCadaColuna[i]);
}
}[/code]
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?
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
[code]// descobre qual o maior numero de cada linha
for (int i = 0; i < 10; i++) {
for (int j = 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]);
}[/code]
[code]// descobre qual o menor numero de cada coluna
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
aux1[j] = matriz[i][j];
if (i==0){
menoresDeCadaColuna[j] = aux1[j];
}
if (j==9){
for (int j2 = 0; j2 < 10; j2++) {
if (menoresDeCadaColuna[j2]> aux1[j2]){
menoresDeCadaColuna[j2] = aux1[j2];
}
}
}
}
}[/code]
se o if for = 0 significa que é a primeira volta do for,
Note que o
int[] menoresDeCadaColuna = new int[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.
/**
* @param args
*/
public static void main(String[] args) {
int[][] matriz = new int [10] [10];
// for de atribuição de valores para a matriz
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
matriz[i][j] = (int)((Math.random()*100) + 1); // gerando numero aleatorio
System.out.print(matriz[i][j] + " | "); // mostrando
}
System.out.println("");
}
System.out.println("");
int[] maioresDeCadaLinha = new int[10];
int aux = 0;
// descobre qual o maior numero de cada linha
for (int i = 0; i < 10; i++) {
for (int j = 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 = new int[10];
int[] aux1 = new int[10];
// descobre qual o menor numero de cada coluna
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
aux1[j] = matriz[i][j];
if (i==0){
menoresDeCadaColuna[j] = aux1[j];
}
if (j==9){
for (int j2 = 0; j2 < 10; j2++) {
if (menoresDeCadaColuna[j2]> aux1[j2]){
menoresDeCadaColuna[j2] = aux1[j2];
}
}
}
}
}
//apenas mostra os menores numero de cada coluna
for (int i = 0; i < menoresDeCadaColuna.length; i++) {
System.out.println("Menor da "+ i + "º coluna é " + menoresDeCadaColuna[i]);
}
}
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