Matriz, com diagonal secundaria e afins

[b]Bom dia Pessoal,

Como sou novo em Java…
Gostaria de saber se alguem poderia me ajudar…

Necessito de um programa que faça:

Seja uma matriz A(nxn), onde n seja fornecido como entrada. Preencha aleatoriamente a matriz com valores de 1 a 50. Deverão ser calculados:

a) o Produto dos elementos situados na diagonal principal.
b)a soma dos elementos situados na diagonal secundaria.
c) produto dos elementos situados acima da diagonal principal.
d) a soma dos elementos situados abaixo da diagonal principal.

Preencher a matriz com os 50 valores é tranquilo. E não sei que tem uma forma de usar o vector, mais gostaria de fixar o programa de maneira mais simples para não ter essas pequenas duvidas mais.

Obrigado!![/b]

Então faz o seguinte, faz a parte que você sabe e depois vamos por partes, poste a parque que deu erro, ou que você não sabe fazer, porque senão pra responder a as pergutas a pessoa praticamente tem que fazer todo o seu programa :wink:

Aguardo sua postagem.

[code]import javax.swing.*;
import java.util.Random;
public class Exercicio08 {

    public static void main (String Args[])
    {
     int mat[][]=new int[50][50],a,b,t=0;
      int soma=0;
      String flag="",saida="";
      JTextArea saidat=new JTextArea();
	Random r=new Random(); 
          
        for(a=0;a<50;a++)
        {
            for(b=0;b<50;b++)
            {
                mat[a][b]=r.nextInt(100);
                saida+=mat[a][b]+"\t";
            }
                saida+="\n";
        }
            
            for(a=0;a<50;a++)
            {
                for(b=0;b<=t;b++)
                {
                    soma+=mat[a][b];
                }
                t++;
            }
            saida+="\n A soma dos elementos abaixo e da diagonal principal é: "
            +soma;
            saida+="\n A média é: "+(soma/15);
            saidat.setText(saida);
            JOptionPane.showMessageDialog(null,saidat,"Matriz 50 x 50",JOptionPane.PLAIN_MESSAGE);
            soma=t=0;
            saida="";
            
            System.exit(0);
    }
}

}
[/code]

Segue o que eu fiz, foi só a soma e ainda ta dando erro =(

E ainda acho que fiz errado, pq se seriam 50 valores, não seria uma 50x50…
Vacilei grandão!!!

[code]import javax.swing.*;
import java.util.Random;
public class Exercicio08 {

    public static void main (String Args[])
    {
     int mat[][]=new int[7][7],a,b,t=0;
      int soma=0;
      String flag="",saida="";
      JTextArea saidat=new JTextArea();
	Random r=new Random(); 
          
        for(a=0;a<7;a++)
        {
            for(b=0;b<7;b++)
            {
                mat[a][b]=r.nextInt(100);
                saida+=mat[a][b]+"\t";
            }
                saida+="\n";
        }
            
            for(a=0;a<7;a++)
            {
                for(b=0;b<=t;b++)
                {
                    soma+=mat[a][b];
                }
                t++;
            }
            saida+="\n A soma dos elementos abaixo e da diagonal principal é: "
            +soma;
            saida+="\n A média é: "+(soma/15);
            saidat.setText(saida);
            JOptionPane.showMessageDialog(null,saidat,"Matriz 7 x 7",JOptionPane.PLAIN_MESSAGE);
            soma=t=0;
            saida="";
            
            System.exit(0);
    }
}

[/code]

Bom, usei seu exercício como treino.

Primeiro, devemos ter em mente o seguinte:

  1. O que é diagonal principal?
  2. O que diagonal secundária?

Podemos encontrar essas respostas aqui: http://pt.wikipedia.org/wiki/Diagonal_de_uma_matriz

Depois o exercício pede para fazer a soma dos elementos acima e abaixo da diagonal principal. Vamos supor que temos a seguinte matriz:

0 4 7
2 3 5
4 2 1

A soma da diagonal principal seria: 0 + 3 + 1 = 4
A soma da diagonal secundária seria: 4 + 3 + 7 = 14
Soma dos elementos ACIMA da diagonal principal: 4 + 7 + 5 = 16
Soma dos elementos ABAIXO da diagonal principal: 2 + 4 + 2 = 8

Ficou claro isso?

Abaixo o código de como fiz:

[code]import java.util.Scanner;

public class Teste {
public static void main(String[] args) {

	Scanner scanner = new Scanner(System.in);
	System.out.print("Digite um valor para N: ");
	int n = scanner.nextInt();				
	
	Vetor v = new Vetor();
	v.criaMatriz(n);
	v.calculaDiagonalPrincipal();
	v.calculaDiagonalSecundaria();
	v.somaAcimaDiagonalPrincipal();
	v.somaAbaixoDiagonalPrincipal();	
	
}

}[/code]

[code]public class Vetor {

int[][] matriz;

public void criaMatriz(int n) {	

	int[][] array = new int[n][n];		
	
	for(int i = 0; i < array.length; i++) {
		System.out.println();
		for(int j = 0; j < array.length; j++) {
			array[i][j] = (int) (Math.random() * 51);
			System.out.print(array[i][j] + "\t");
		}
		matriz = array;
	}
}


public void calculaDiagonalPrincipal() {
	int diagonalPrincipal = 0;
	for(int i = 0; i < matriz.length; i++) {
		for(int j = 0; j < matriz.length; j++) {
			if(i == j) {
				diagonalPrincipal += matriz[i][j];
			}
		}
	}
	System.out.println("\n\nDiagonal Principal = " + diagonalPrincipal);
}

public void calculaDiagonalSecundaria() {
	int diagonalSecundaria = 0;
	for(int i = matriz.length - 1; i >= 0; i--) {
		for(int j = matriz.length - 1; j >= 0; j--) {
			if(i + j == matriz.length -	1) {
				diagonalSecundaria += matriz[i][j];
			}
		}
	}
	System.out.println("Diagonal Secundária = " + diagonalSecundaria);
}

public void somaAcimaDiagonalPrincipal() {
	int soma = 0;
	for(int i = 0; i < matriz.length; i++) {
		for(int j = 0; j < matriz.length; j++) {
			if(i >= j) {
				continue;										
			}					
			soma += matriz[i][j];							
		}			
	}
	System.out.println("Produto dos elementos acima da Diagonal Principal: " + soma);
}

public void somaAbaixoDiagonalPrincipal() {
	int soma = 0;
	loop1:
	for(int i = 0; i < matriz.length; i++) {
		for(int j = 0; j < matriz.length; j++) {
			if(i <= j) {
				continue loop1;										
			}
			soma += matriz[i][j];							
		}			
	}
	System.out.println("Produto dos elementos abaixo da Diagonal Principal: " + soma);
}

}[/code]

Estude o código, entenda ele!
Qualquer dúvida poste aqui que lhe ajudamos.

[quote=gustavo_mb]Bom, usei seu exercício como treino.

Primeiro, devemos ter em mente o seguinte:

  1. O que é diagonal principal?
  2. O que diagonal secundária?

Podemos encontrar essas respostas aqui: http://pt.wikipedia.org/wiki/Diagonal_de_uma_matriz

Depois o exercício pede para fazer a soma dos elementos acima e abaixo da diagonal principal. Vamos supor que temos a seguinte matriz:

0 4 7
2 3 5
4 2 1

A soma da diagonal principal seria: 0 + 3 + 1 = 4
A soma da diagonal secundária seria: 4 + 3 + 7 = 14
Soma dos elementos ACIMA da diagonal principal: 4 + 7 + 5 = 16
Soma dos elementos ABAIXO da diagonal principal: 2 + 4 + 2 = 8

Ficou claro isso?

Abaixo o código de como fiz:

[code]import java.util.Scanner;

public class Teste {
public static void main(String[] args) {

	Scanner scanner = new Scanner(System.in);
	System.out.print("Digite um valor para N: ");
	int n = scanner.nextInt();				
	
	Vetor v = new Vetor();
	v.criaMatriz(n);
	v.calculaDiagonalPrincipal();
	v.calculaDiagonalSecundaria();
	v.somaAcimaDiagonalPrincipal();
	v.somaAbaixoDiagonalPrincipal();	
	
}

}[/code]

[code]public class Vetor {

int[][] matriz;

public void criaMatriz(int n) {	

	int[][] array = new int[n][n];		
	
	for(int i = 0; i < array.length; i++) {
		System.out.println();
		for(int j = 0; j < array.length; j++) {
			array[i][j] = (int) (Math.random() * 51);
			System.out.print(array[i][j] + "\t");
		}
		matriz = array;
	}
}


public void calculaDiagonalPrincipal() {
	int diagonalPrincipal = 0;
	for(int i = 0; i < matriz.length; i++) {
		for(int j = 0; j < matriz.length; j++) {
			if(i == j) {
				diagonalPrincipal += matriz[i][j];
			}
		}
	}
	System.out.println("\n\nDiagonal Principal = " + diagonalPrincipal);
}

public void calculaDiagonalSecundaria() {
	int diagonalSecundaria = 0;
	for(int i = matriz.length - 1; i >= 0; i--) {
		for(int j = matriz.length - 1; j >= 0; j--) {
			if(i + j == matriz.length -	1) {
				diagonalSecundaria += matriz[i][j];
			}
		}
	}
	System.out.println("Diagonal Secundária = " + diagonalSecundaria);
}

public void somaAcimaDiagonalPrincipal() {
	int soma = 0;
	for(int i = 0; i < matriz.length; i++) {
		for(int j = 0; j < matriz.length; j++) {
			if(i >= j) {
				continue;										
			}					
			soma += matriz[i][j];							
		}			
	}
	System.out.println("Produto dos elementos acima da Diagonal Principal: " + soma);
}

public void somaAbaixoDiagonalPrincipal() {
	int soma = 0;
	loop1:
	for(int i = 0; i < matriz.length; i++) {
		for(int j = 0; j < matriz.length; j++) {
			if(i <= j) {
				continue loop1;										
			}
			soma += matriz[i][j];							
		}			
	}
	System.out.println("Produto dos elementos abaixo da Diagonal Principal: " + soma);
}

}[/code]

Estude o código, entenda ele!
Qualquer dúvida poste aqui que lhe ajudamos.

[/quote]

Gustavo,

Valeu demais!!! Com certeza vou estudar o codigo e entender mais sobre o exercicio…
Bom demais, muito obrigado!!!