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 <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
// 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
// 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 |
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 codeif __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 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// PHP program to change the value of // non-diagonal elements of a matrix to 0 // Function to print the resultant matrix function 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 0 function 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?> |
Javascript
<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> |
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
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



