Program to convert given Matrix to a Diagonal Matrix

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 of 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}}
```

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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++ program to change the value of ` `// non-diagonal elements of a matrix to 0 ` ` `  `#include ` `using` `namespace` `std; ` ` `  `const` `int` `MAX = 100; ` ` `  `// Function to print the resultant matrix ` `void` `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 0 ` `void` `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 Code ` `int` `main() ` `{ ` `    ``int` `mat[][MAX] = { { 2, 1, 7 }, ` `                       ``{ 3, 7, 2 }, ` `                       ``{ 5, 4, 9 } }; ` ` `  `    ``makenondiagonalzero(mat, 3, 3); ` ` `  `    ``return` `0; ` `} `

Java

 `// Java program to change the value of ` `// non-diagonal elements of a matrix to 0 ` `import` `java.io.*; ` ` `  `class` `GFG  ` `{ ` `static` `int` `MAX = ``100``; ` ` `  `// Function to print the resultant matrix ` `static` `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 0 ` `static` `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 Code ` `public` `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 `

Python3

 `# Python 3 program to change the value of  ` `# non-diagonal elements of a matrix to 0  ` ` `  `# Function to print the resultant matrix  ` `def` `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 0  ` `def` `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 code ` `if` `__name__ ``=``=` `"__main__"` `: ` `     `  `    ``mat ``=` `[ [``2``, ``1``, ``7``], ` `            ``[``3``, ``7``, ``2``], ` `            ``[``5``, ``4``, ``9``] ] ` `                     `  `    ``makenondiagonalzero(mat, ``3``, ``3``) ` `     `  `# This code is contributed by Ryuga `

C#

 `// C# program to change the value  ` `// of non-diagonal elements of a  ` `// matrix to 0 ` `using` `System; ` ` `  `class` `GFG  ` `{ ` `     `  `// static int MAX = 100; ` ` `  `// Function to print the resultant ` `// matrix ` `static` `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 0 ` `static` `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 Code ` `public` `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

 ` `

Output:

```2 0 7
0 7 0
5 0 9
```

Time complexity : O(n*m)

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.