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++
#include <iostream>
using namespace std;
const int MAX = 100;
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;
}
}
void makenondiagonalzero( int mat[][MAX], int n, int m)
{
for ( int i = 0; i < n; i++) {
for ( int j = 0; j < m; j++) {
if (i != j && i + j + 1 != n)
mat[i][j] = 0;
}
}
print(mat, n, m);
}
int main()
{
int mat[][MAX] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
makenondiagonalzero(mat, 3, 3);
return 0;
}
|
C
#include <stdio.h>
#define M 100
#define N 100
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" );
}
}
void makenondiagonalzero( int mat[M][N], int n, int m)
{
for ( int i = 0; i < n; i++) {
for ( int j = 0; j < m; j++) {
if (i != j && i + j + 1 != n)
mat[i][j] = 0;
}
}
print(mat, n, m);
}
int main()
{
int mat[][100] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
makenondiagonalzero(mat, 3, 3);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int MAX = 100 ;
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();
}
}
static void makenondiagonalzero( int mat[][],
int n, int m)
{
for ( int i = 0 ; i < n; i++)
{
for ( int j = 0 ; j < m; j++)
{
if (i != j && i + j + 1 != n)
mat[i][j] = 0 ;
}
}
print(mat, n, m);
}
public static void main (String[] args)
{
int mat[][] = { { 2 , 1 , 7 },
{ 3 , 7 , 2 },
{ 5 , 4 , 9 } };
makenondiagonalzero(mat, 3 , 3 );
}
}
|
Python3
def printmatrix(mat, n, m) :
for i in range (n) :
for j in range (m) :
print (mat[i][j], end = " " )
print ()
def makenondiagonalzero(mat, n, m) :
for i in range (n) :
for j in range (m) :
if i ! = j and i + j + 1 ! = n :
mat[i][j] = 0
printmatrix(mat, n, m)
if __name__ = = "__main__" :
mat = [ [ 2 , 1 , 7 ],
[ 3 , 7 , 2 ],
[ 5 , 4 , 9 ] ]
makenondiagonalzero(mat, 3 , 3 )
|
C#
using System;
class GFG
{
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();
}
}
static void makenondiagonalzero( int [,]mat,
int n, int m)
{
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j < m; j++)
{
if (i != j && i + j + 1 != n)
mat[i, j] = 0;
}
}
print(mat, n, m);
}
public static void Main ()
{
int [,]mat = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
makenondiagonalzero(mat, 3, 3);
}
}
|
PHP
<?php
function print1( $mat , $n , $m )
{
for ( $i = 0; $i < $n ; $i ++)
{
for ( $j = 0; $j < $m ; $j ++)
{
echo $mat [ $i ][ $j ] . " " ;
}
echo "\n" ;
}
}
function makenondiagonalzero( $mat , $n , $m )
{
for ( $i = 0; $i < $n ; $i ++)
{
for ( $j = 0; $j < $m ; $j ++)
{
if ( $i != $j && $i + $j + 1 != $n )
$mat [ $i ][ $j ] = 0;
}
}
print1( $mat , $n , $m );
}
$mat = array ( array ( 2, 1, 7 ),
array ( 3, 7, 2 ),
array ( 5, 4, 9 ) );
makenondiagonalzero( $mat , 3, 3);
?>
|
Javascript
<script>
let MAX = 100;
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 makenondiagonalzero(mat,n,m)
{
for (let i = 0; i < n; i++)
{
for (let j = 0; j < m; j++)
{
if (i != j && i + j + 1 != n)
mat[i][j] = 0;
}
}
print(mat, n, m);
}
let mat = [[ 2, 1, 7 ],
[ 3, 7, 2 ],
[ 5, 4, 9 ]];
makenondiagonalzero(mat, 3, 3);
</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
Last Updated :
13 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...