Open In App

Program to convert the diagonal elements of the matrix to 0

Last Updated : 15 Sep, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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++
// C++ program to change value of
// diagonal elements of a matrix to 0.
#include <iostream>
using namespace std;
const int MAX = 100;

// 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 diagonal elements to 0
void makediagonalzero(int mat[][MAX], int n, int m)
{
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {

            // right and left diagonal condition
            if (i == j || (i + j + 1) == n)
                mat[i][j] = 0;
        }
    }

    // print resultant matrix
    print(mat, n, m);
}

// Driver code
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
// Java program to change value of 
// diagonal elements of a matrix to 0. 
class GFG
{

static final int MAX = 100;

// 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 diagonal elements to 0 
static void makediagonalzero(int mat[][], 
                             int n, int m)
{
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < m; j++) 
        {

            // right and left diagonal condition 
            if (i == j || (i + j + 1) == n)
            {
                mat[i][j] = 0;
            }
        }
    }

    // print resultant matrix 
    print(mat, n, m);
}

// Driver code 
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);
}
}

// This code is contributed 
// by PrinciRaj1992
Python 3
# Python 3 program to change value of
# diagonal elements of a matrix to 0.
MAX = 100

# to print the resultant matrix
def print_1(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 diagonal elements to 0
def makediagonalzero(mat, n, m):

    for i in range(n):
        for j in range(m):

            # right and left diagonal condition
            if (i == j or (i + j + 1) == n):
                mat[i][j] = 0

    # print resultant matrix
    print_1(mat, n, m)

# Driver code
if __name__ == "__main__":

    n = 3
    m = 3
    mat = [[ 2, 1, 7 ],
           [ 3, 7, 2 ],
           [ 5, 4, 9 ]]

    makediagonalzero(mat, n, m)

# This code is contributed by ChitraNayal
C#
// C# program to change value of 
// diagonal elements of a matrix to 0. 
using System;

class GFG
{

static int MAX = 100;

// 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 diagonal elements to 0 
static void makediagonalzero(int[,] mat, 
                            int n, int m)
{
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < m; j++) 
        {

            // right and left diagonal condition 
            if (i == j || (i + j + 1) == n)
            {
                mat[i, j] = 0;
            }
        }
    }

    // print resultant matrix 
    print(mat, n, m);
}

// Driver code 
public static void Main() 
{
    int n = 3, m = 3;
    int[,] mat = {{2, 1, 7},
                  {3, 7, 2},
                  {5, 4, 9}};

    makediagonalzero(mat, n, m);
}
}

// This code is contributed 
// by Akanksha Rai
PHP
<?php
// PHP program to change value of
// diagonal elements of a matrix to 0.

// to print the resultant matrix
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 to change the values
// of diagonal elements to 0
function makediagonalzero(&$mat, $n, $m)
{
    for ($i = 0; $i < $n; $i++) 
    {
        for ($j = 0; $j < $m; $j++) 
        {

            // right and left diagonal condition
            if ($i == $j || ($i + $j + 1) == $n)
                $mat[$i][$j] = 0;
        }
    }

    // print resultant matrix
    printsd($mat, $n, $m);
}

// Driver code
$n = 3; $m = 3;
$mat = array(array(2, 1, 7),
             array(3, 7, 2),
             array(5, 4, 9));

makediagonalzero($mat, $n, $m);

// This code is contributed by Shivi_Aggarwal
?>
JavaScript
<script>
// Javascript program to change value of
// diagonal elements of a matrix to 0.

const MAX = 100;

// 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 diagonal elements to 0
function makediagonalzero(mat, n, m)
{
    for (let i = 0; i < n; i++) 
    {
        for (let j = 0; j < m; j++) 
        {

            // right and left diagonal condition
            if (i == j || (i + j + 1) == n)
                mat[i][j] = 0;
        }
    }

    // print resultant matrix
    print(mat, n, m);
}

// Driver code
    let n = 3, m = 3;
    let mat = [ [ 2, 1, 7 ],
                       [ 3, 7, 2 ],
                       [ 5, 4, 9 ] ];

    makediagonalzero(mat, n, m);

// This code is contributed by souravmahato348.
</script>
C
// C program to change value of
// diagonal elements of a matrix to 0.
#include <stdio.h>

#define MAX 100

// 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++)
            printf("%d ",mat[i][j]);

        printf("\n");
    }
}

// function to change the values
// of diagonal elements to 0
void makediagonalzero(int mat[][MAX], int n, int m)
{
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {

            // right and left diagonal condition
            if (i == j || (i + j + 1) == n)
                mat[i][j] = 0;
        }
    }

    // print resultant matrix
    print(mat, n, m);
}

// Driver code
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;
}

Output
0 1 0 
3 0 2 
0 4 0 

Time Complexity: O(n*m)
Auxiliary Space: O(1)

Another Approach:

C++
// C++ program to change value of
// diagonal elements of a matrix to 0.
#include <bits/stdc++.h>
#define COL 100
using namespace std;

// Method to replace the diagonal matrix with zeros
void diagonalMat(int m[][COL], int row, int col)
{

    // l is the left iterator which is
    // iterationg from 0 to col-1[4] here
    // k is the right iterator which is
    // iterating from col-1 to 0
    int i = 0, l = 0, k = col - 1;

    // i used to iterate over rows of the matrix
    while (i < row) {
        int j = 0;

        // condition to check if it is
        // the centre of the matrix
        if (l == k) {
            m[l][k] = 0;
            l++;
            k--;
        } // otherwise the diagonal will be equivalent to l
          // or k increment l because l is traversing from
          // left to right and decrement k for vice-cersa
        else {
            m[i][l] = 0;
            l++;
            m[i][k] = 0;
            k--;
        }

        // print every element after replacing from the
        // column
        while (j < col) {
            cout << " " << m[i][j];
            j++;
        }
        i++;
        cout << "\n";
    }
}

// Driver code
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;
}

// This code has been contributed by 29AjayKumar
C
// C program to change value of
// diagonal elements of a matrix to 0.
#include <stdio.h>

#define COL 100

// Method to replace the diagonal matrix with zeros
void diagonalMat( int m[][COL] ,int row, int col) 
{

    // l is the left iterator which is 
    // iterationg from 0 to col-1[4] here
    //k is the right iterator which is 
    // iterating from col-1 to 0
    int i = 0, l = 0, k = col - 1;

    // i used to iterate over rows of the matrix
    while (i < row) 
    {
        int j = 0;
        
        // condition to check if it is 
        // the centre of the matrix
        if (l == k) 
        {
            m[l][k] = 0;
            l++;
            k--;
        }         //otherwise the diagonal will be equivalent to l or k
            //increment l because l is traversing from left 
            //to right and decrement k for vice-cersa
        else 
        {
            m[i][l] = 0;
            l++;
            m[i][k] = 0;
            k--;
        }
        
        // print every element after replacing from the column
        while (j < col) 
        {
            printf(" %d",m[i][j]);
            j++;
        }
        i++;
        printf("\n");
    }

}

// Driver code
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;
}

// This code has been contributed by kothavvsaakash
Java
// Java program to change value of
// diagonal elements of a matrix to 0.
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);
    }
    // method to replace the diagonal matrix with zeros
    public static void diagonalMat(int row, int col, int m[][]){
        
        // l is the left iterator which is 
        // iterationg from 0 to col-1[4] here
        //k is the right iterator which is 
        // iterating from col-1 to 0
        int i =0,l=0,k=col-1;
        
        // i used to iterate over rows of the matrix
        while(i<row){
            int j=0;
            // condition to check if it is 
            // the centre of the matrix
            if(l==k){
                m[l][k] = 0;
                l++;
                k--;
            }
            //otherwise the diagonal will be equivalent to l or k
            //increment l because l is traversing from left 
            //to right and decrement k for vice-cersa
            else{
                m[i][l] = 0;
                l++;
                m[i][k]=0;
                k--;
            }
            // print every element after replacing from the column
            while(j<col){
                System.out.print(" "+ m[i][j]);
                j++;
            }
            i++;
            System.out.println();
        }
        
    }

}
Python3
# Python3 program to change value of
# diagonal elements of a matrix to 0.

# method to replace the diagonal
# matrix with zeros
def diagonalMat(row, col, m):

    # l is the left iterator which is 
    # iterationg from 0 to col-1[4] here
    # k is the right iterator which is 
    # iterating from col-1 to 0
    i, l, k = 0, 0, col - 1;

    # i used to iterate over rows of the matrix
    while(i < row):
        j = 0;
        
        # condition to check if it is 
        # the centre of the matrix
        if(l == k):
            m[l][k] = 0;
            l += 1;
            k -= 1;
            
        # otherwise the diagonal will be equivalent to l or k
        # increment l because l is traversing from left 
        # to right and decrement k for vice-cersa
        else:
            m[i][l] = 0;
            l += 1;
            m[i][k] = 0;
            k -= 1;
            
        # print every element 
        # after replacing from the column
        while(j < col):
            print(" ", m[i][j], end = "");
            j += 1;
        i += 1;
        print("");

# Driver Code
if __name__ == '__main__':
    m = [[2, 1, 7 ],
        [ 3, 7, 2 ],
        [ 5, 4, 9 ]];
    row, col = 3, 3;
    diagonalMat(row, col, m);
    
# This code contributed by Rajput-Ji
C#
// C# program to change value of
// diagonal elements of a matrix to 0.
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);
    }
    // method to replace the diagonal matrix with zeros
    public static void diagonalMat(int row, int col, int[,] m){
        
        // l is the left iterator which is 
        // iterationg from 0 to col-1[4] here
        //k is the right iterator which is 
        // iterating from col-1 to 0
        int i =0,l=0,k=col-1;
        
        // i used to iterate over rows of the matrix
        while(i < row){
            int j=0;
            // condition to check if it is 
            // the centre of the matrix
            if(l==k){
                m[l,k] = 0;
                l++;
                k--;
            }
            //otherwise the diagonal will be equivalent to l or k
            //increment l because l is traversing from left 
            //to right and decrement k for vice-cersa
            else{
                m[i,l] = 0;
                l++;
                m[i,k]=0;
                k--;
            }
            // print every element after replacing from the column
            while(j < col){
                Console.Write(" " + m[i,j]);
                j++;
            }
            i++;
            Console.WriteLine();
        }
        
    }

}
      //This code is contributed by Mukul singh
JavaScript
<script>
// Javascript program to change value of
// diagonal elements of a matrix to 0.

const COL = 100;

// Method to replace the diagonal matrix with zeros
function diagonalMat(m, row, col) 
{

    // l is the left iterator which is 
    // iterationg from 0 to col-1[4] here
    //k is the right iterator which is 
    // iterating from col-1 to 0
    let i = 0, l = 0, k = col - 1;

    // i used to iterate over rows of the matrix
    while (i < row) 
    {
        let j = 0;
        
        // condition to check if it is 
        // the centre of the matrix
        if (l == k) 
        {
            m[l][k] = 0;
            l++;
            k--;
        }         //otherwise the diagonal will be equivalent to l or k
            //increment l because l is traversing from left 
            //to right and decrement k for vice-cersa
        else 
        {
            m[i][l] = 0;
            l++;
            m[i][k] = 0;
            k--;
        }
        
        // print every element after replacing from the column
        while (j < col) 
        {
            document.write(" " + m[i][j]);
            j++;
        }
        i++;
        document.write("<br>");
    }

}

// Driver code
    let m =[[ 2, 1, 7],
                    [ 3, 7, 2],
                    [ 5, 4, 9]];
    let row = 3, col = 3;
    diagonalMat( m, row, col);

</script>

Output
 0 1 0
 3 0 2
 0 4 0

Time Complexity: O(n*m)
Auxiliary Space: O(1)


Next Article
Practice Tags :

Similar Reads