Program to convert given Matrix to a Diagonal Matrix

13 May, 2022
Given a N*N matrix. The task is to convert the matrix to a diagonal matrix. That is to change the values of the non-diagonal elements of a matrix to 0.Diagonal-Matrix: A matrix is called a Diagonal Matrix if all the non-diagonal elements of the matrix are zero.Examples:  
Input : mat[][] = {{ 2, 1, 7 },
                   { 3, 7, 2 },
                   { 5, 4, 9 }}
Output : {{2, 0, 7},
          {0, 7, 0},
          {5, 0, 9}}

Input :  mat[][] = {{1, 3, 5, 6, 7},
                    {3, 5, 3, 2, 1},
                    {1, 2, 3, 4, 5},
                    {7, 9, 2, 1, 6},
                    {9, 1, 5, 3, 2}}
Output : {{1, 0, 0, 0, 7},
          {0, 5, 0, 2, 0},
          {0, 0, 3, 0, 0},
          {0, 9, 0, 1, 0},
          {9, 0, 0, 0, 2}}
 
Traverse all the non-diagonal elements of the matrix using two nested loops as shown in the below code and make them zero.Below is the program to make all non-diagonal elements of a matrix zero:  
C++
C
Java
Python3
C#
PHP
Javascript
// C++ program to change the value of// non-diagonal elements of a matrix to 0 #include <iostream>using namespace std; const int MAX = 100; // Function to print the resultant matrixvoid print(int mat[][MAX], int n, int m){    for (int i = 0; i < n; i++) {        for (int j = 0; j < m; j++) {            cout << mat[i][j] << " ";        }        cout << endl;    }} // Function to change the values of all// non-diagonal elements to 0void makenondiagonalzero(int mat[][MAX], int n, int m){    // Traverse all non-diagonal elements    for (int i = 0; i < n; i++) {        for (int j = 0; j < m; j++) {            if (i != j && i + j + 1 != n)                 // Change all non-diagonal                // elements to zero                mat[i][j] = 0;        }    }     // print resultant matrix    print(mat, n, m);} // Driver Codeint main(){    int mat[][MAX] = { { 2, 1, 7 },                       { 3, 7, 2 },                       { 5, 4, 9 } };     makenondiagonalzero(mat, 3, 3);     return 0;}
// C program to change the value of// non-diagonal elements of a matrix to 0#include <stdio.h>#define M 100#define N 100 // Function to print the resultant matrixvoid print(int mat[M][N], int n, int m){    for (int i = 0; i < n; i++) {        for (int j = 0; j < m; j++) {            printf("%d ",mat[i][j]);        }        printf("\n");    }} // Function to change the values of all// non-diagonal elements to 0void makenondiagonalzero(int mat[M][N], int n, int m){    // Traverse all non-diagonal elements    for (int i = 0; i < n; i++) {        for (int j = 0; j < m; j++) {            if (i != j && i + j + 1 != n)                 // Change all non-diagonal                // elements to zero                mat[i][j] = 0;        }    }     // print resultant matrix    print(mat, n, m);} // Driver Codeint main(){    int mat[][100] = { { 2, 1, 7 },                       { 3, 7, 2 },                       { 5, 4, 9 } };     makenondiagonalzero(mat, 3, 3);     return 0;} // This code is contributed by kothvvsaakash.
// Java program to change the value of// non-diagonal elements of a matrix to 0import java.io.*; class GFG{static int MAX = 100; // Function to print the resultant matrixstatic void print(int mat[][], int n, int m){    for (int i = 0; i < n; i++)    {        for (int j = 0; j < m; j++)        {            System.out.print( mat[i][j] + " ");        }        System.out.println();    }} // Function to change the values of all// non-diagonal elements to 0static void makenondiagonalzero(int mat[][],                                int n, int m){    // Traverse all non-diagonal elements    for (int i = 0; i < n; i++)    {        for (int j = 0; j < m; j++)        {            if (i != j && i + j + 1 != n)                 // Change all non-diagonal                // elements to zero                mat[i][j] = 0;        }    }     // print resultant matrix    print(mat, n, m);} // Driver Codepublic static void main (String[] args){    int mat[][] = { { 2, 1, 7 },                    { 3, 7, 2 },                    { 5, 4, 9 } };     makenondiagonalzero(mat, 3, 3);}} // This code is contributed by inder_verma
# Python 3 program to change the value of# non-diagonal elements of a matrix to 0 # Function to print the resultant matrixdef printmatrix(mat, n, m) :         for i in range(n) :        for j in range(m) :            print(mat[i][j], end = " ")                 print() # Function to change the values# of all non-diagonal elements to 0def makenondiagonalzero(mat, n, m) :         # Traverse all non-diagonal elements    for i in range(n) :        for j in range(m) :            if i != j and i + j + 1 != n :                                 # Change all non-diagonal                # elements to zero                mat[i][j] = 0         # print resultant matrix    printmatrix(mat, n, m)     # Driver codeif __name__ == "__main__" :         mat = [ [2, 1, 7],            [3, 7, 2],            [5, 4, 9] ]                         makenondiagonalzero(mat, 3, 3)     # This code is contributed by Ryuga
// C# program to change the value// of non-diagonal elements of a// matrix to 0using System; class GFG{     // static int MAX = 100; // Function to print the resultant// matrixstatic void print(int [,]mat,                  int n, int m){    for (int i = 0; i < n; i++)    {        for (int j = 0; j < m; j++)        {            Console.Write(mat[i, j] + " ");        }        Console.WriteLine();    }} // Function to change the values of all// non-diagonal elements to 0static void makenondiagonalzero(int [,]mat,                                int n, int m){    // Traverse all non-diagonal elements    for (int i = 0; i < n; i++)    {        for (int j = 0; j < m; j++)        {            if (i != j && i + j + 1 != n)                 // Change all non-diagonal                // elements to zero                mat[i, j] = 0;        }    }     // print resultant matrix    print(mat, n, m);} // Driver Codepublic static void Main (){    int [,]mat = { { 2, 1, 7 },                   { 3, 7, 2 },                   { 5, 4, 9 } };     makenondiagonalzero(mat, 3, 3);}} // This code is contributed by anuj_67..
<?php// PHP program to change the value of// non-diagonal elements of a matrix to 0 // Function to print the resultant matrixfunction print1($mat, $n, $m){    for ($i = 0; $i < $n; $i++)    {        for ($j = 0; $j < $m; $j++)        {            echo $mat[$i][$j] . " ";        }        echo "\n";    }} // Function to change the values of// all non-diagonal elements to 0function makenondiagonalzero($mat, $n, $m){    // Traverse all non-diagonal elements    for ($i = 0; $i < $n; $i++)    {        for ($j = 0; $j < $m; $j++)        {            if ($i != $j && $i + $j + 1 != $n)                 // Change all non-diagonal                // elements to zero                $mat[$i][$j] = 0;        }    }     // print resultant matrix    print1($mat, $n, $m);} // Driver Code$mat = array( array( 2, 1, 7 ),              array( 3, 7, 2 ),              array( 5, 4, 9 ) ); makenondiagonalzero($mat, 3, 3); // This code is contributed// by Arnab Kundu?>
<script>// Java Script program to change the value of// non-diagonal elements of a matrix to 0let MAX = 100; // Function to print the resultant matrixfunction print(mat,n,m){    for (let i = 0; i < n; i++)    {        for (let j = 0; j < m; j++)        {            document.write( mat[i][j] + " ");        }        document.write("<br>");    }} // Function to change the values of all// non-diagonal elements to 0function makenondiagonalzero(mat,n,m){    // Traverse all non-diagonal elements    for (let i = 0; i < n; i++)    {        for (let j = 0; j < m; j++)        {            if (i != j && i + j + 1 != n)                 // Change all non-diagonal                // elements to zero                mat[i][j] = 0;        }    }     // print resultant matrix    print(mat, n, m);} // Driver Code     let mat = [[ 2, 1, 7 ],                    [ 3, 7, 2 ],                    [ 5, 4, 9 ]];     makenondiagonalzero(mat, 3, 3); // This code is contributed by sravan kumar G</script>
2 0 7 
0 7 0 
5 0 9
 
Time complexity : O(n*m) 
inderDuMCA
vt_m
andrew1234
ankthon
VishalBachchas
sravankumar8128
kothavvsaakash
Technical Scripter 2018
Matrix
School Programming
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.