GeeksforGeeks App
Open App
Browser
Continue

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

## C

 `// C program to change the value of``// non-diagonal elements of a matrix to 0``#include ``#define M 100``#define N 100` `// Function to print the resultant matrix``void` `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 0``void` `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 Code``int` `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

 `// 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

 ``

## Javascript

 ``

Output:

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

Time complexity : O(n*m)

Auxiliary space: O(1) because it is using constant space, if space for input array is not considered

My Personal Notes arrow_drop_up