Filling diagonal to make the sum of every row, column and diagonal equal of 3×3 matrix

Given 9 elements in a 3 x 3 matrix where the value of diagonals are 0. We need to find the values in diagonal to make the sum of every row, column and diagonal equal.

Examples:

Input: 
0 3 6 
5 0 5
4 7 0
Output: 
6 3 6
5 5 5
4 7 4
Explanation: 
    Now the value of the sum of 
    any row or column is 15

Input: 
0 4 4
4 0 4
4 4 0
Output: 
4 4 4
4 4 4
4 4 4

Approach:

  • Let’s say the diagonal is x, y and z.
  • The value of x will be ( x2, 3 + x3, 2 ) / 2.
  • The value of z will be ( x1, 2 + x2, 1 ) / 2.
  • The value of y will be ( x + z ) / 2.

Below is the implementation of the above approach:

Program:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to implement
// the above problem
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to print the matrix
void print(int arr[3][3])
{
    int i = 0, j = 0;
  
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++)
            cout << arr[i][j] << " ";
        cout << endl;
    }
}
  
// Function to find the diagonal values
void find(int arr[3][3])
{
    arr[0][0] = (arr[1][2] + arr[2][1]) / 2;
    arr[2][2] = (arr[0][1] + arr[1][0]) / 2;
    arr[1][1] = (arr[0][0] + arr[1][1]) / 2;
  
    // Print the new matrix with diagonals
    cout << "Matrix with diagonals:\n";
    print(arr);
}
  
// Driver code
int main()
{
    // Initialize all the elements of a matrix
    int arr[3][3] = { { 0, 54, 48 },
                      { 36, 0, 78 },
                      { 66, 60, 0 } };
  
    cout << "Matrix initially:\n";
    print(arr);
  
    find(arr);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to implement 
// the above problem 
class GFG
{
  
// Function to print the matrix 
static void print(int arr[][]) 
    int i = 0, j = 0
  
    for (i = 0; i < 3; i++)
    
        for (j = 0; j < 3; j++) 
            System.out.print( arr[i][j] + " "); 
        System.out.println();
    
  
// Function to find the diagonal values 
static void find(int arr[][]) 
    arr[0][0] = (arr[1][2] + arr[2][1]) / 2
    arr[2][2] = (arr[0][1] + arr[1][0]) / 2
    arr[1][1] = (arr[0][0] + arr[1][1]) / 2
  
    // Print the new matrix with diagonals 
    System.out.print( "Matrix with diagonals:\n"); 
    print(arr); 
  
// Driver code 
public static void main(String args[])
    // Initialize all the elements of a matrix 
    int arr[][] = { { 0, 54, 48 }, 
                    { 36, 0, 78 }, 
                    { 66, 60, 0 } }; 
  
    System.out.print( "Matrix initially:\n"); 
    print(arr); 
  
    find(arr); 
}
  
// This code is contributed by Arnab Kundu

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to implement 
// the above problem 
using System;
  
class GFG 
  
    // Function to print the matrix 
    static void print(int [,]arr) 
    
        int i = 0, j = 0; 
      
        for (i = 0; i < 3; i++) 
        
            for (j = 0; j < 3; j++) 
                Console.Write( arr[i, j] + " "); 
                  
            Console.WriteLine(); 
        
    
      
    // Function to find the diagonal values 
    static void find(int [,]arr) 
    
        arr[0, 0] = (arr[1, 2] + arr[2, 1]) / 2; 
        arr[2, 2] = (arr[0, 1] + arr[1, 0]) / 2; 
        arr[1, 1] = (arr[0, 0] + arr[1, 1]) / 2; 
      
        // Print the new matrix with diagonals 
        Console.Write( "Matrix with diagonals:\n"); 
        print(arr); 
    
      
    // Driver code 
    public static void Main() 
    
        // Initialize all the elements of a matrix 
        int [,]arr = { { 0, 54, 48 }, 
                        { 36, 0, 78 }, 
                        { 66, 60, 0 } }; 
      
        Console.Write( "Matrix initially:\n"); 
        print(arr); 
      
        find(arr); 
    
  
// This code is contributed by Ryuga

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to implement
// the above problem Function
// to print the matrix
function printt( $arr)
{
    $i = 0;
    $j = 0;
  
    for ($i = 0; $i < 3; $i++) 
    {
        for ($j = 0; $j < 3; $j++)
            echo $arr[$i][$j], " ";
        echo "\n";
    }
}
  
// Function to find the diagonal values
function find( $arr)
{
    $arr[0][0] = ($arr[1][2] + $arr[2][1]) / 2;
    $arr[2][2] = ($arr[0][1] + $arr[1][0]) / 2;
    $arr[1][1] = ($arr[0][0] + $arr[1][1]) / 2;
  
    // Print the new matrix with diagonals
    echo "Matrix with diagonals:\n";
    printt($arr);
}
  
// Driver code
  
// Initialize all the elements of a matrix
$arr =array(array( 0, 54, 48 ),
        array( 36, 0, 78 ),
        array( 66, 60, 0 ));
  
echo "Matrix initially:\n";
printt($arr);
  
find($arr);
  
#This Code is contributed by ajit..
?>

chevron_right


Output:

Matrix initially:
0 54 48 
36 0 78 
66 60 0 

Matrix with diagonals:
69 54 48 
36 34 78 
66 60 45


My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.