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 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> |
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
Please Login to comment...