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++ 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 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 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.. |
<?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 ?> |
<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