簡體   English   中英

如何根據矩陣的x軸對稱性進行設置

[英]How to set according to the x-axis Symmetry of Matrix

我需要一個可以根據矩陣對稱性的x軸使用的函數。

輸入(矩陣[i] [j]):

1 2 3
4 5 6
7 8 9

輸出(矩陣[i] [j]):

7 8 9
4 5 6
1 2 3

如何在同一矩陣上執行此操作? 我應該如何編寫逆函數?

void inverse(.......)
 {
 ..
 ..
 ..
 }

int main(){
int **matrix, i, j, k, row, column;
cout << "Row and column:" ;
cin >> row >> column;
matrix = new int*[row];
for (i=0; i<row; ++i){
    matrix[i] = new int[column];
}
cout << "input elements of matrix: " << endl;
for(i=0; i<row; i++){
         for (j=0; j<column; j++){
             cin >> *(*(matrix+i)+j);
         }
}  

inverse (........);

for(i=0; i<row; i++){
         for (j=0; j<column; j++){
             cout << *(*(matrix+i)+j);
         }
         cout << endl;
}  
return 0;
}

在這種情況下,您可以修改循環以向后打印矩陣:

for(i = 0; i < row; i++) {

->

for(i = row - 1; i >= 0; i--) {

但是,如果您想對數據做一些實際的事情,我的建議是將代碼重構為使用std::vector

std::vector<std::vector<int> > matrix(numberOfRows, std::vector<int>(numberOfColumns));
// You can use std::vector<std::valarray<int> > matrix; alternatively.

然后,您只需使用STL函數將其翻轉:

std::reverse(matrix.begin(), matrix.end());

編輯:
好吧,如果您暫時不想使用std::vector ,並且在這種情況下,您可以這樣做:

void flipMatrix(int** matrix, int rows, int columns) {
    int middle = rows/2; // I expect it to truncate for an odd number of rows.

    // Temporary row for swapping
    int* tempRow;

    for (int i = 0; i < middle; i++) {
        // swap rows
        tempRow = matrix[i];
        matrix[i] = matrix[rows - i - 1];
        matrix[rows - i - 1] = tempRow;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM