Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Điền các phần tử chéo thiếu của magic square 3x3 C++

Cho ma trận 3x3 với các phần tử trên đường chéo chính bằng 0. Cần điền các giá trị này sao cho tổng mỗi hàng, cột và đường chéo đều bằng nhau.

Ví dụ ma trận đầu vào: 0 3 6 5 0 5 4 7 0
Sau khi điền: 6 3 6 5 5 5 4 7 4

Công thức

  • x = (M[1][2] + M[2][1]) / 2
  • z = (M[0][1] + M[1][0]) / 2
  • y = (x + z) / 2

Ví dụ minh họa

#include <iostream>
using namespace std;

void displayMatrix(int matrix[3][3]) {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++)
            cout << matrix[i][j] << " ";
        cout << endl;
    }
}

void fillDiagonal(int matrix[3][3]) {
    matrix[0][0] = (matrix[1][2] + matrix[2][1]) / 2;
    matrix[2][2] = (matrix[0][1] + matrix[1][0]) / 2;
    matrix[1][1] = (matrix[0][0] + matrix[2][2]) / 2;
    cout << "Ma tran cuoi cung:" << endl;
    displayMatrix(matrix);
}

int main() {
    int matrix[3][3] = {{0, 7, 6}, {9, 0, 1}, {4, 3, 0}};
    cout << "Ma tran ban dau:" << endl;
    displayMatrix(matrix);
    fillDiagonal(matrix);
}

Kết quả

Ma tran ban dau
0 7 6
9 0 1
4 3 0
Ma tran cuoi cung
2 7 6
9 5 1
4 3 8