# 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++ 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 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 `

 `# 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# 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.. `

 ` `

Output:
```2 0 7
0 7 0
5 0 9
```

Time complexity : O(n*m)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

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.

Article Tags :
Practice Tags :