Filling diagonal to make the sum of every row, column and diagonal equal of 3x3 matrix - GeeksforGeeks

06 Jun, 2021
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++
Java
Python3
C#
PHP
Javascript
// C++ program to implement// the above problem #include <bits/stdc++.h>using namespace std; // Function to print the matrixvoid 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 valuesvoid 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 codeint 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;}
// Java program to implement// the above problemclass GFG{ // Function to print the matrixstatic 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 valuesstatic 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 codepublic 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
# Python3 program to implement# the above problem # Function to print the matrixdef print_(arr, n):    for i in range(n):        for j in range(n):            print(arr[i][j], end = " ")        print("\n", end= "") # Function to find the diagonal valuesdef find(arr, n):    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("\nMatrix with diagonals:")    print_(arr, n) # Driver codearr = [[0, 54, 48],       [36, 0, 78],       [66, 60, 0]] n = 3print("Matrix initially:")print_(arr, n)find(arr, n) # This code is contributed by Shrikant13
// C# program to implement// the above problemusing 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
<?php// PHP program to implement// the above problem Function// to print the matrixfunction 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 valuesfunction 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..?>
<script>// Java script program to implement// the above problem // Function to print the matrixfunction print(arr){    let i = 0, j = 0;     for (i = 0; i < 3; i++)    {        for (j = 0; j < 3; j++)            document.write( parseInt(arr[i][j]) + " ");        document.write("<br>");    }} // Function to find the diagonal valuesfunction 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    document.write( "Matrix with diagonals:<br>");    print(arr);} // Driver code     // Initialize all the elements of a matrix    let arr = [[ 0, 54, 48 ],                    [36, 0, 78 ],                    [ 66, 60, 0 ]];     document.write( "Matrix initially:<br>");    print(arr);     find(arr); // This code is contributed by sravan kumar Gottumukkala</script>
Matrix initially:
0 54 48 
36 0 78 
66 60 0 

Matrix with diagonals:
69 54 48 
36 34 78 
66 60 45
 
andrew1234
ankthon
jit_t
shrikanth13
sravankumar8128
surinderdawra388
programming-puzzle
C++ Programs
Matrix
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C++ Program for QuickSort
Shallow Copy and Deep Copy in C++
delete keyword in C++
Passing a function as a parameter in C++
cin in C++
Matrix Chain Multiplication | DP-8
Program to find largest element in an array
Rat in a Maze | Backtracking-2
Print a given matrix in spiral form
Sudoku | Backtracking-7