Matriz, com diagonal secundaria e afins

6 respostas
N

[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]

6 Respostas

ibotirama

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.

N
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);
	    }
	}
}
Segue o que eu fiz, foi só a soma e ainda ta dando erro =(
N

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

N
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);
	    }
	}
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:

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();	
		
	}
}
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);
	}
	
	
	
	
}

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

N
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:

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();	
		
	}
}
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);
	}
	
	
	
	
}

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

Gustavo,

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

Criado 31 de outubro de 2011
Ultima resposta 31 de out. de 2011
Respostas 6
Participantes 3