Olá pessoal, gostaria que vcs me ajudassem com um método revert, que reverte uma matriz de inteiros, ou seja, o primeirp número vai pra última posição, segunda pra penultima e assim por diante…
fiz esse método, mas ele não funciona com matrizes com linhas e colunas ímpares, por exemplo matriz[5][5]…
public static void revert(int matriz[][]) {
int num;
int tamanho = matriz.length;
for (int i = 0; i < tamanho / 2; i++) {
for (int j = 0; j < matriz.length; j++) {
num = matriz[i][j];
matriz[i][j] = matriz[tamanho - 1 - i][tamanho - 1 - j];
matriz[tamanho - 1 - i][tamanho - 1 - j] = num;
}
}
}
Tem certeza que não funciona?
Olhe a saida desse codigo:
public class LixoK {
int[][] matrix = new int[9][9];
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new LixoK();
}
public LixoK(){
for(int x = 0; x<9; x++){
for(int y=0; y<9; y++){
matrix[x][y]= x*10+y;
}
}
printMatrix();
revert(matrix);
printMatrix();
}
public void printMatrix(){
for(int x = 0; x<9; x++){
System.out.println("");
for(int y=0; y<9; y++){
System.out.print(matrix[x][y] + "-");
}
}
System.out.println("");
System.out.println("");
}
public static void revert(int matriz[][]) {
int num;
int tamanho = matriz.length;
for (int i = 0; i < tamanho / 2; i++) {
for (int j = 0; j < matriz.length; j++) {
num = matriz[i][j];
matriz[i][j] = matriz[tamanho - 1 - i][tamanho - 1 - j];
matriz[tamanho - 1 - i][tamanho - 1 - j] = num;
}
}
}
}
tenho, na verdade esse método não modifica apenas a linha do meio, por exemplo:
69 82 31 22 73
84 66 57 6 77
[color=red]9 18 30 81 19[/color]
98 60 45 95 7
22 21 0 30 17
17 30 0 21 22
7 95 45 60 98
[color=red]9 18 30 81 19[/color]
77 6 57 66 84
73 22 31 82 69
Meu caro,
Primeiro escreva o algoritmo no caderno primeiro, pense na logica que vc ira usar.
Tem razao, a linha do meio não foi revertida.
Vamos dar uma olhada melhor nesse teu método então.
public static void revert(int matriz[][]) {
int num;
int numero = 0;
int tamanho = matriz.length;
for (int i = 0; i < tamanho / 2; i++) {
for (int j = 0; j < matriz.length; j++) {
num = matriz[i][j];
matriz[i][j] = matriz[tamanho - 1 - i][tamanho - 1 - j];
matriz[tamanho - 1 - i][tamanho - 1 - j] = num;
}
}
if (tamanho % 2 != 0) {
for (int i = 0; i < tamanho / 2; i++) {
numero = matriz[(tamanho / 2)][i];
matriz[(tamanho / 2)][i] = matriz[(tamanho / 2)][tamanho - 1 - i];
matriz[(tamanho / 2)][tamanho - 1 - i] = numero;
}
}
}