Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เติมค่าที่หายไปในเมจิกสแควร์ 3x3 ใน C++

ปัญหา

ให้เมทริกซ์ 3x3 ที่มีค่าเส้นทแยงมุมเป็น 0 (ว่าง) ต้องการเติมค่าเส้นทแยงมุมให้ผลรวมของแต่ละแถว แต่ละคอลัมน์ และเส้นทแยงมุมทั้งสองเท่ากัน

ตัวอย่าง

เมทริกซ์ต้นฉบับ:

036
505
470

หลังเติมค่า:

636
555
474

สูตรคำนวณ

ให้ค่าเส้นทแยงมุมคือ x, y, z (ตามลำบับมุมซ้ายบน, กลาง, ขวาล่าง):

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

ตัวอย่างโค้ด C++

#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 << "Final Matrix" << endl;
    displayMatrix(matrix);
}

int main() {
    int matrix[3][3] = {{0, 7, 6}, {9, 0, 1}, {4, 3, 0}};
    cout << "Given Matrix" << endl;
    displayMatrix(matrix);
    fillDiagonal(matrix);
    return 0;
}

ผลลัพธ์

Given Matrix
0 7 6
9 0 1
4 3 0
Final Matrix
2 7 6
9 5 1
4 3 8