Bom dia, olivercld!
Adoro ficar aqui resolverndo problemas desse tipo e parei para ver o seu das diagonais, apesar do sono eu resolvi e deixei sua classe mais genérica, possibilitando trabalhar com qualquer matriz quadrada, veja o resultado:
[code]import javax.swing.JOptionPane;
public class Matriz_bidimen {
static int num_lin = 4, num_col = 4;
public static void main(String[] args) {
int matO[][] = new int[num_lin][num_col];
// int matB[][] = new int[10][10];
// int cont = 0;
int temp;
String mensagem = " ", texto = "";
int linha, coluna;
JOptionPane.showMessageDialog(null, "Matriz : ");
for (linha = 0; linha < num_lin; linha++)
for (coluna = 0; coluna < num_col; coluna++) {
// cont++;
// matO[linha][coluna] = cont;
matO[linha][coluna] = Integer.parseInt(JOptionPane
.showInputDialog(null, " DIGITE VALORES DA MAT["
+ linha + "] [" + coluna + "] : "));
// mensagem = mensagem + "\n valores" + matO[linha][coluna];
// JOptionPane.showMessageDialog(null, mensagem);
}
// apresentando a matriz
for (linha = 0; linha < num_lin; linha++){
texto = texto +"\n";
for (coluna = 0; coluna < num_col; coluna++) {
mensagem = mensagem + "\n mat[" + linha + "][" + coluna
+ "] : " + matO[linha][coluna];
texto = texto +" "+ matO[linha][coluna];
} }
JOptionPane.showMessageDialog(null, mensagem);
mensagem = "";
JOptionPane.showMessageDialog(null, texto);
texto="";
// troca a diagonal secundaria pela primaria
for (linha = 0; linha < num_lin; linha++)
for (coluna = 0; coluna < num_col; coluna++) {
if (linha + coluna == (num_col-1)) {
temp = matO[linha][(num_col-1)-linha];
//System.out.println(linha+""+coluna+": "+temp);
matO[linha][(num_col-1)-linha] = matO[linha][linha];
matO[linha][linha] = temp;
}
}
// apresentando a matriz
for (linha = 0; linha < num_lin; linha++){
texto = texto +"\n";
for (coluna = 0; coluna < num_col; coluna++) {
mensagem = mensagem + "\n mat[" + linha + "][" + coluna
+ "] : " + matO[linha][coluna];
texto = texto +" "+ matO[linha][coluna];
} }
JOptionPane.showMessageDialog(null, mensagem);
JOptionPane.showMessageDialog(null, texto);
}
}[/code]
OBS: basicamente trabalhei em cima do seu código, e usei variaveis para setar o alcance da matriz deixando o código mais abrangente, não ficando limitado a matriz 10x10.
Espero que isso ajude… o que diz respeito a tua dúvida seria essa parte do código:
// troca a diagonal secundaria pela primaria
for (linha = 0; linha < num_lin; linha++)
for (coluna = 0; coluna < num_col; coluna++) {
if (linha + coluna == (num_col-1)) {
temp = matO[linha][(num_col-1)-linha];
//System.out.println(linha+""+coluna+": "+temp);
matO[linha][(num_col-1)-linha] = matO[linha][linha];
matO[linha][linha] = temp;
}
}
Abraço e bons estudos!
EDIT, na verdade APPEND (lol):
Salve, olivercld!
Voltei! Bom, fiz a parte de trocar a 3º linha pela 9º coluna, mas ao final surge a grande questão no indice 2,8 fica o valor da 3º linha ou o da 9º coluna? hehe, vou te mostrar o antes e depois e vc vai entender melhor, caso já não tenha entendido:
ANTES DA TROCA[color=white]…[/color]DEPOIS DA TROCA
Veja na imagem que ilustra depois da troca, de acordo com os calores que usei, no índice sublinhado de vermelho, qual valor deveria existir: 2 ou 8?
A pergunta surge pois antes de ser feita a troca, o valor da intersessão era 2, porém depois da troca dois valores disputam o indice: 2 ou 8?
Se fosse para trocar linha n por coluna n não haveria esse probleminha. Faça uma análise e se possível tire essa dúvida com teu professor.
De qualquer forma segue o código que trata da troca:
// troca linha 3 com coluna 9
for(int indice = 0; indice < num_col; indice++ ){
temp = matO[2][indice];
matO[2][indice] = matO[indice][8];
matO[indice][8] = temp;
}
Aguardo sua análise para possível modificação do código.
Abraço!