Diagonal secundária...!

Como eu faço pra calcular uma diagonal secundária de uma matriz…??
estou fazendo um programa k preencha aleatoriamente uma matriz 9*9,e que calcule a soma e a média dos elementos situados na matriz secundaria… mais não estou conseguindo pegar matriz secundaria…!

eu tenho e idéia em mente mais estou com díficuldade em colocar em pratica… vo deixar meu código quem puder me ajude…!

import javax.swing.*;
import java.util.*;

public class AED8
{
	public static void main(String args[])
	{
		Random aleatorio = new Random();
		JTextArea texto = new JTextArea(10,10);
		int vet[][]= new int[9][9],i,j,soma=0;
		String saida="Programa 8 \n";
		
		for(i=0;i<9;i++)
		{
			for(j=0;j<9;j++)
			{
				vet[i][j]=1+aleatorio.nextInt(9);
		
				saida+=vet[i][j]+"   ";

			}
			
			saida+="\n";
		}
		
		texto.setText(saida);
		JOptionPane.showMessageDialog(null,texto);
	}
}

Ola,

mas ae vc só inicializou a matriz…

para pegar a matriz seundaria é so vc colocar o “i” num for em ordem crescente e o “j” em orderm decrescente… mas sem for.

verifica essa linha aki

int vet[][]= new int[9][9],i,j,soma=0;

o que sera q esta errado ai em ? :razz:

mais cara tenhu em ideia de como fazer isso…vai ser tudo dentro de uma for…?
p/Ratinho

vi erro nenhum naum cara… porque ??

Ola

Bom, tudo dentro de um for sim…

O erro que o Ratinho aponto e que se vc declarar do jeito que vc tá fazendo tudo será matriz… procure separar as declarações de acordo com o tipo, ex.:

int vet[][]= new int[9][9]; 
int i,j,soma=0;

Assim fica mais claro e evita erros…

Qual a diferença de int vet[][]= new int[9][9],i,j,soma=0;
pra int vet[][]=new int[9][9];
int i,j,soma=0;???

[quote]
matriz aki vai ser so o que eu declarei uai
vet[][]= new int[9][9],i,j,soma=0; as outras variaveis tem nada a ver com a
matriz…![/quote]

A diferença é que a segunda forma é bem mais clara de se entender. Dá pra ver claramente que a primeira linha declara um array, e a segunda inteiros.
A princípio, eu também achei que estivesse errado.

Quando ao problema, basta você colocar 2 for, um dentro do outro.
O externo varia de 0 a n - 1, e o interno de n - 1 a 0.
Se i + j = n - 1, então o número está na diagonal secundária.

p/Schuenemann
Muito obrigado pela dica agora eu soh faço como vc falow realmente fica melhor…!

public static int somaDiagonalSecundaria(int[][] matriz) {
	int soma = 0;
	int col = matriz.length - 1;
	for (int row = 0; row < matriz.length; row++) {
		soma += matriz[row][col];
		col--;
	}
	return soma;
}

Simples:
A cada linha que vc descer na matriz, no caso incrementar para a proxima linha, vc decrementa a coluna:
Ex: Matriz 3x3

Linha|Coluna
0 2
1 1 ->incrementou linha e decrementou coluna.
2 0 ->incrementou linha e decrementou coluna.

Matriz 3x3:
[1 7 9]
[2 4 8]
[5 7 6]

A soma na Secundária deste exemplo será:
9 + 4 + 5 = 18
Para isso linhas e colunas devem ser iguais na quantidade, ou seja, uma matriz quadrada.

1 curtida

Uma dica: este tópico é muito antigo (7 anos). Antes de responder, favor verificar a data, não é uma boa idéia ressuscitar tópicos antigos.
Se quiser colaborar, pode postar um novo tópico, indicando, no título, que trata-se de uma dica.
Outro ponto, este tipo de coisa, diagonais principal e secundária são lugares comum dentro do estudo de uma linguagem, o ideal seria que os alunos aprendessem pesquisando e pensando em como resolver. Isso é que torna o processo de aprendizado mais interessante, embora as pessoas não entendam ou não percebam isso. Ou seja, colocar o código pronto não ajuda muito, isso tira a principal forma de aprender, que é pensando, tentando e tendo erros.