Computer >> Máy Tính >  >> Lập trình >> C ++

Điền vào các mục còn thiếu của một hình vuông ma thuật trong C ++

Giả sử chúng ta có một ma trận 3x3, mà các phần tử đường chéo của chúng lúc đầu trống. Chúng ta phải điền vào đường chéo sao cho tổng của hàng, cột và đường chéo sẽ bằng nhau. Giả sử một ma trận giống như -

0 3 6
5 0 5
4 7 0

Sau khi điền, nó sẽ -

6 3 6
5 5 5
4 7 4

Giả sử các phần tử của đường chéo là x, y, z. Các giá trị sẽ là -

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

Ví dụ

#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);
}

Đầu ra

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