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 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 <stdio.h> #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
<?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 0 let MAX = 100; // Function to print the resultant matrix function 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 0 function 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)
Auxiliary space: O(1) because it is using constant space, if space for input array is not considered
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!