Program to convert the diagonal elements of the matrix to 0
Last Updated :
15 Sep, 2022
Given an N*N matrix. The task is to convert the elements of diagonal of a matrix to 0.
Examples:
Input: mat[][] =
{{ 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 }}
Output:
{ {0, 1, 0},
{3, 0, 2},
{0, 4, 0}}
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:
{{0, 3, 5, 6, 0},
{3, 0, 3, 0, 1},
{1, 2, 0, 4, 5},
{7, 0, 2, 0, 6},
{0, 1, 5, 3, 0}}
Approach: Run two loops i.e. outer loop for no. of rows and inner loop for no. of columns. Check for the below condition:
if ((i == j ) || (i + j + 1) == n)
mat[i][j] = 0
Below is the implementation of the above approach:
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 makediagonalzero( 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 n = 3, m = 3;
int mat[][MAX] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
makediagonalzero(mat, n, m);
return 0;
}
|
Java
class GFG
{
static final 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 makediagonalzero( 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 n = 3 , m = 3 ;
int mat[][] = {{ 2 , 1 , 7 },
{ 3 , 7 , 2 },
{ 5 , 4 , 9 }};
makediagonalzero(mat, n, m);
}
}
|
Python 3
MAX = 100
def print_1(mat, n, m):
for i in range (n):
for j in range (m):
print ( mat[i][j], end = " " )
print ()
def makediagonalzero(mat, n, m):
for i in range (n):
for j in range (m):
if (i = = j or (i + j + 1 ) = = n):
mat[i][j] = 0
print_1(mat, n, m)
if __name__ = = "__main__" :
n = 3
m = 3
mat = [[ 2 , 1 , 7 ],
[ 3 , 7 , 2 ],
[ 5 , 4 , 9 ]]
makediagonalzero(mat, n, m)
|
C#
using System;
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++)
{
Console.Write(mat[i, j] + " " );
}
Console.WriteLine();
}
}
static void makediagonalzero( 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 n = 3, m = 3;
int [,] mat = {{2, 1, 7},
{3, 7, 2},
{5, 4, 9}};
makediagonalzero(mat, n, m);
}
}
|
PHP
<?php
function printsd(& $mat , $n , $m )
{
for ( $i = 0; $i < $n ; $i ++)
{
for ( $j = 0; $j < $m ; $j ++)
{
echo ( $mat [ $i ][ $j ]);
echo ( " " );
}
echo ( "\n" );
}
}
function makediagonalzero(& $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;
}
}
printsd( $mat , $n , $m );
}
$n = 3; $m = 3;
$mat = array ( array (2, 1, 7),
array (3, 7, 2),
array (5, 4, 9));
makediagonalzero( $mat , $n , $m );
?>
|
Javascript
<script>
const 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 makediagonalzero(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 n = 3, m = 3;
let mat = [ [ 2, 1, 7 ],
[ 3, 7, 2 ],
[ 5, 4, 9 ] ];
makediagonalzero(mat, n, m);
</script>
|
C
#include <stdio.h>
#define 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++)
printf ( "%d " ,mat[i][j]);
printf ( "\n" );
}
}
void makediagonalzero( 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 n = 3, m = 3;
int mat[][MAX] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
makediagonalzero(mat, n, m);
return 0;
}
|
Time Complexity: O(n*m)
Auxiliary Space: O(1)
Another Approach:
C++
#include <bits/stdc++.h>
#define COL 100
using namespace std;
void diagonalMat( int m[][COL], int row, int col)
{
int i = 0, l = 0, k = col - 1;
while (i < row) {
int j = 0;
if (l == k) {
m[l][k] = 0;
l++;
k--;
}
else {
m[i][l] = 0;
l++;
m[i][k] = 0;
k--;
}
while (j < col) {
cout << " " << m[i][j];
j++;
}
i++;
cout << "\n" ;
}
}
int main()
{
int m[][COL]
= { { 2, 1, 7 }, { 3, 7, 2 }, { 5, 4, 9 } };
int row = 3, col = 3;
diagonalMat(m, row, col);
return 0;
}
|
C
#include <stdio.h>
#define COL 100
void diagonalMat( int m[][COL] , int row, int col)
{
int i = 0, l = 0, k = col - 1;
while (i < row)
{
int j = 0;
if (l == k)
{
m[l][k] = 0;
l++;
k--;
}
else
{
m[i][l] = 0;
l++;
m[i][k] = 0;
k--;
}
while (j < col)
{
printf ( " %d" ,m[i][j]);
j++;
}
i++;
printf ( "\n" );
}
}
int main()
{
int m[][COL] ={{ 2, 1, 7},
{ 3, 7, 2},
{ 5, 4, 9}};
int row = 3, col = 3;
diagonalMat( m, row, col);
return 0;
}
|
Java
import java.io.*;
class GFG {
public static void main (String[] args) {
int m[][] = {{ 2 , 1 , 7 },
{ 3 , 7 , 2 },
{ 5 , 4 , 9 }};
int row = 3 , col = 3 ;
GFG.diagonalMat(row,col,m);
}
public static void diagonalMat( int row, int col, int m[][]){
int i = 0 ,l= 0 ,k=col- 1 ;
while (i<row){
int j= 0 ;
if (l==k){
m[l][k] = 0 ;
l++;
k--;
}
else {
m[i][l] = 0 ;
l++;
m[i][k]= 0 ;
k--;
}
while (j<col){
System.out.print( " " + m[i][j]);
j++;
}
i++;
System.out.println();
}
}
}
|
Python3
def diagonalMat(row, col, m):
i, l, k = 0 , 0 , col - 1 ;
while (i < row):
j = 0 ;
if (l = = k):
m[l][k] = 0 ;
l + = 1 ;
k - = 1 ;
else :
m[i][l] = 0 ;
l + = 1 ;
m[i][k] = 0 ;
k - = 1 ;
while (j < col):
print ( " " , m[i][j], end = "");
j + = 1 ;
i + = 1 ;
print ("");
if __name__ = = '__main__' :
m = [[ 2 , 1 , 7 ],
[ 3 , 7 , 2 ],
[ 5 , 4 , 9 ]];
row, col = 3 , 3 ;
diagonalMat(row, col, m);
|
C#
using System;
class GFG {
public static void Main () {
int [,] m = {{ 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 }};
int row = 3, col = 3;
GFG.diagonalMat(row,col,m);
}
public static void diagonalMat( int row, int col, int [,] m){
int i =0,l=0,k=col-1;
while (i < row){
int j=0;
if (l==k){
m[l,k] = 0;
l++;
k--;
}
else {
m[i,l] = 0;
l++;
m[i,k]=0;
k--;
}
while (j < col){
Console.Write( " " + m[i,j]);
j++;
}
i++;
Console.WriteLine();
}
}
}
|
Javascript
<script>
const COL = 100;
function diagonalMat(m, row, col)
{
let i = 0, l = 0, k = col - 1;
while (i < row)
{
let j = 0;
if (l == k)
{
m[l][k] = 0;
l++;
k--;
}
else
{
m[i][l] = 0;
l++;
m[i][k] = 0;
k--;
}
while (j < col)
{
document.write( " " + m[i][j]);
j++;
}
i++;
document.write( "<br>" );
}
}
let m =[[ 2, 1, 7],
[ 3, 7, 2],
[ 5, 4, 9]];
let row = 3, col = 3;
diagonalMat( m, row, col);
</script>
|
Time Complexity: O(n*m)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...