Saturday, November 16, 2024
Google search engine
HomeData Modelling & AIProgram to convert given Matrix to a Diagonal Matrix

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
 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments