ปัญหา
ให้เมทริกซ์ 3x3 ที่มีค่าเส้นทแยงมุมเป็น 0 (ว่าง) ต้องการเติมค่าเส้นทแยงมุมให้ผลรวมของแต่ละแถว แต่ละคอลัมน์ และเส้นทแยงมุมทั้งสองเท่ากัน
ตัวอย่าง
เมทริกซ์ต้นฉบับ:
| 0 | 3 | 6 |
| 5 | 0 | 5 |
| 4 | 7 | 0 |
หลังเติมค่า:
| 6 | 3 | 6 |
| 5 | 5 | 5 |
| 4 | 7 | 4 |
สูตรคำนวณ
ให้ค่าเส้นทแยงมุมคือ 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