Fill Diagonal to Make Sum of 3x3 Matrix Equal



Suppose we have one 3x3 matrix, whose diagonal elements are empty at first. We have to fill the diagonal such that the sum of a row, column and diagonal will be the same. Suppose a matrix is like −

After filling, it will be −

Suppose the diagonal elements are x, y, z. The values will be −

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

Example

 Live Demo

#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, 3, 6 },
   { 5, 0, 5 },
   { 4, 7, 0 }};
   cout << "Given Matrix" << endl;
   displayMatrix(matrix);
   fillDiagonal(matrix);
}

Output

Given Matrix
0 3 6
5 0 5
4 7 0
Final Matrix
6 3 6
5 5 5
4 7 4
Updated on: 2019-10-29T11:19:29+05:30

227 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements