Open In App

Program to check diagonal matrix and scalar matrix

Improve
Improve
Like Article
Like
Save
Share
Report

Diagonal matrix

A square matrix is said to be a diagonal matrix if the elements of the matrix except the main diagonal are zero. A square null matrix is also a diagonal matrix whose main diagonal elements are zero. 

Examples: 

Input: 
Mat[4][4] = {{4, 0, 0, 0},
             {0, 5, 0, 0},
             {0, 0, 2, 0},
             {0, 0, 0, 1}}
Output: Yes

Input:
Mat[4][4] = {{6, 10, 12, 0},
             {0, 5, 0, 0},
             {0, 0, 9, 0},
             {0, 0, 0, 1}}
Output: No

Below is the implementation:

CPP




// Program to check matrix is diagonal matrix or not.
 
#include <bits/stdc++.h>
#define N 4
using namespace std;
 
// Function to check matrix
// is diagonal matrix or not.
bool isDiagonalMatrix(int mat[N][N])
{
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
 
            // condition to check other elements
            // except main diagonal are zero or not.
            if ((i != j) && (mat[i][j] != 0))
                return false;
    return true;
}
 
// Driver function
int main()
{
    int mat[N][N] = { { 4, 0, 0, 0 },
                      { 0, 7, 0, 0 },
                      { 0, 0, 5, 0 },
                      { 0, 0, 0, 1 } };
 
    if (isDiagonalMatrix(mat))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
    return 0;
}


Java




// Program to check matrix is
// diagonal matrix or not.
 
import java.io.*;
 
class GFG {
     
    static int N = 4;
     
    // Function to check matrix
    // is diagonal matrix
    // or not.
    static boolean isDiagonalMatrix(int mat[][])
    {
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
      
                // condition to check
                // other elements
                // except main diagonal
                // are zero or not.
                if ((i != j) &&
                   (mat[i][j] != 0))
                    return false;
 
        return true;
    }
      
    // Driver function
    public static void main(String args[])
    {
        int mat[][] = { { 4, 0, 0, 0 },
                          { 0, 7, 0, 0 },
                          { 0, 0, 5, 0 },
                          { 0, 0, 0, 1 } };
      
        if (isDiagonalMatrix(mat))
            System.out.println("Yes");
        else
            System.out.println("No" );
    }
}
 
// This code is contributed by
// Nikita Tiwari.


Python3




# Python3 Program to check if matrix
# is diagonal matrix or not.
 
N = 4
 
# Function to check matrix
# is diagonal matrix
# or not.  
def isDiagonalMatrix(mat) :
    for i in range(0, N):
        for j in range(0, N) :
             
            # condition to check
            # other elements
            # except main diagonal
            # are zero or not.
            if ((i != j) and
             (mat[i][j] != 0)) :
                return False
 
    return True
 
 
# Driver function
mat = [[ 4, 0, 0, 0 ],
       [ 0, 7, 0, 0 ],
       [ 0, 0, 5, 0 ],
       [ 0, 0, 0, 1 ]]
 
if (isDiagonalMatrix(mat)) :
    print("Yes")
else :
    print("No")
     
     
# This code is contributed by Nikita Tiwari.


C#




// Program to check matrix is
// diagonal matrix or not.
using System;
 
class GFG {
     
    static int N = 4;
     
    // Function to check matrix
    // is diagonal matrix
    // or not.
    static bool isDiagonalMatrix(int [,]mat)
    {
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
     
                // condition to check
                // other elements
                // except main diagonal
                // are zero or not.
                if ((i != j) &&    (mat[i,j] != 0))
                    return false;
 
        return true;
    }
     
    // Driver function
    public static void Main()
    {
        int [,]mat = { { 4, 0, 0, 0 },
                        { 0, 7, 0, 0 },
                        { 0, 0, 5, 0 },
                        { 0, 0, 0, 1 } };
     
        if (isDiagonalMatrix(mat))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No" );
    }
}
 
// This code is contributed by
// vt_m.


PHP




<?php
// Program to check matrix is
// diagonal matrix or not.
 
$N= 4;
 
// Function to check matrix is
// diagonal matrix or not.
function isDiagonalMatrix($mat)
{
    global $N;
    for ($i = 0; $i < $N; $i++)
        for ($j = 0; $j < $N; $j++)
 
            // condition to check
            // other elements
            // except main diagonal
            // are zero or not.
            if (($i != $j) &&
                ($mat[$i][$j] != 0))
                return false;
    return true;
}
 
    // Driver Code
    $mat = array(array(4, 0, 0, 0),
                 array(0, 7, 0, 0),
                 array(0, 0, 5, 0),
                 array(0, 0, 0, 1));
 
    if (isDiagonalMatrix($mat))
        echo "Yes" ,"\n";
    else
        echo "No","\n";
 
// This code is contributed by jit_t
?>


Javascript




<script>
 
// JavaScript program to check matrix is
// diagonal matrix or not.
 
let N = 4;
       
    // Function to check matrix
    // is diagonal matrix
    // or not.
    function isDiagonalMatrix(mat)
    {
        for (let i = 0; i < N; i++)
            for (let j = 0; j < N; j++)
        
                // condition to check
                // other elements
                // except main diagonal
                // are zero or not.
                if ((i != j) &&
                   (mat[i][j] != 0))
                    return false;
   
        return true;
    }
 
// Driver code
 
        let mat = [[ 4, 0, 0, 0 ],
                          [ 0, 7, 0, 0 ],
                          [ 0, 0, 5, 0 ],
                          [ 0, 0, 0, 1 ]];
        
        if (isDiagonalMatrix(mat))
            document.write("Yes");
        else
            document.write("No" );
 
</script>


Output

Yes

Time Complexity: O(N2), where N represents the number of rows and columns of the given matrix.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

Scalar matrix

A square matrix is said to be a scalar matrix if all the main diagonal elements are equal and other elements except main diagonal are zero. The scalar matrix can also be written in form of n * I, where n is any real number and I is the identity matrix. 

Examples: 

Input:
Mat[4][4] = {{4, 0, 0, 0},
             {0, 4, 0, 0},
             {0, 0, 4, 0},
             {0, 0, 0, 4}} 
Output: Yes

Input:
Mat[4][4] = {{4, 0, 0, 0},
             {0, 4, 0, 0},
             {0, 0, 1, 0},
             {0, 0, 0, 4}} 
Output: No

Below is the implementation:

CPP




// Program to check matrix is scalar matrix or not.
#include <bits/stdc++.h>
#define N 4
using namespace std;
 
// Function to check matrix is scalar matrix or not.
bool isScalarMatrix(int mat[N][N])
{
    // Check all elements except main diagonal are
    // zero or not.
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            if ((i != j) && (mat[i][j] != 0))
                return false;
 
    // Check all diagonal elements are same or not.
    for (int i = 0; i < N - 1; i++)
        if (mat[i][i] != mat[i + 1][i + 1])
            return false;
    return true;
}
 
// Driver function
int main()
{
    int mat[N][N] = { { 2, 0, 0, 0 },
                      { 0, 2, 0, 0 },
                      { 0, 0, 2, 0 },
                      { 0, 0, 0, 2 } };
    // Function call
    if (isScalarMatrix(mat))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
    return 0;
}


Java




// Program to check matrix
// is scalar matrix or not.
import java.io.*;
 
class GFG {
     
    static int N = 4;
    // Function to check matrix
    // is scalar matrix or not.
    static boolean isScalarMatrix(int mat[][])
    {
        // Check all elements
        // except main diagonal are
        // zero or not.
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
                if ((i != j)
                  && (mat[i][j] != 0))
                    return false;
      
        // Check all diagonal elements
        // are same or not.
        for (int i = 0; i < N - 1; i++)
            if (mat[i][i] != mat[i + 1][i + 1])
                return false;
        return true;
    }
      
    // Driver function
    public static void main(String args[])
    {
        int mat[ ][ ] = { { 2, 0, 0, 0 },
                          { 0, 2, 0, 0 },
                          { 0, 0, 2, 0 },
                          { 0, 0, 0, 2 } };
        // Function call
        if (isScalarMatrix(mat))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed
// by Nikita tiwari.


Python3




# Program to check matrix
# is scalar matrix or not.
 
 
N = 4
 
# Function to check matrix is
# scalar matrix or not.
def isScalarMatrix(mat) :
     
    # Check all elements
    # except main diagonal are
    # zero or not.
    for i in range(0,N) :
        for j in range(0,N) :
            if ((i != j)
               and (mat[i][j] != 0)) :
                return False
  
    # Check all diagonal
    # elements are same or not.
    for i in range(0,N-1) :
        if (mat[i][i] !=
           mat[i + 1][i + 1]) :
            return False
 
    return True
 
 
# Driver function
mat = [[ 2, 0, 0, 0 ],
       [ 0, 2, 0, 0 ],
       [ 0, 0, 2, 0 ],
       [ 0, 0, 0, 2 ]]
 
# Function call
if (isScalarMatrix(mat)):
    print("Yes")
else :
    print("No")
     
     
# This code is contributed by
# Nikita tiwari.


C#




// Program to check matrix
// is scalar matrix or not.
using System;
 
class GFG {
     
    static int N = 4;
     
    // Function to check matrix
    // is scalar matrix or not.
    static bool isScalarMatrix(int [,]mat)
    {
        // Check all elements
        // except main diagonal are
        // zero or not.
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
                if ((i != j) && (mat[i,j] != 0))
                    return false;
     
        // Check all diagonal elements
        // are same or not.
        for (int i = 0; i < N - 1; i++)
            if (mat[i, i] != mat[i + 1, i + 1])
                return false;
        return true;
    }
     
    // Driver function
    public static void Main()
    {
        int [,]mat = { { 2, 0, 0, 0 },
                        { 0, 2, 0, 0 },
                        { 0, 0, 2, 0 },
                        { 0, 0, 0, 2 } };
        // Function call
        if (isScalarMatrix(mat))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed
// by vt_m.


PHP




<?php
// Program to check matrix
// is scalar matrix or not.
 
$N = 4;
 
// Function to check matrix
// is scalar matrix or not.
function isScalarMatrix($mat)
{
    global $N;
    // Check all elements except
    // main diagonal are zero or not.
    for ($i = 0; $i < $N; $i++)
        for ($j = 0; $j < $N; $j++)
            if (($i != $j) &&
                ($mat[$i][$j] != 0))
                return false;
 
    // Check all diagonal elements
    // are same or not.
    for ($i = 0; $i < $N - 1; $i++)
        if ($mat[$i][$i] != $mat[$i + 1][$i + 1])
            return false;
    return true;
}
 
// Driver Code
$mat = array(array(2, 0, 0, 0),
             array(0, 2, 0, 0),
             array(0, 0, 2, 0),
             array(0, 0, 0, 2));
              
// Function call
if (isScalarMatrix($mat))
    echo "Yes";
else
    echo "No" ;
 
// This code is contributed by mits
?>


Javascript




<script>
// Javascript Program to check matrix
// is scalar matrix or not.
   let N = 4;
    
    // Function to check matrix
    // is scalar matrix or not.
    function isScalarMatrix(mat)
    {
     
        // Check all elements
        // except main diagonal are
        // zero or not.
        for (let i = 0; i < N; i++)
            for (let j = 0; j < N; j++)
                if ((i != j)
                  && (mat[i][j] != 0))
                    return false;
       
        // Check all diagonal elements
        // are same or not.
        for (let i = 0; i < N - 1; i++)
            if (mat[i][i] != mat[i + 1][i + 1])
                return false;
        return true;
    }
      
 
    // Driver Code
    let mat = [[ 2, 0, 0, 0 ],
                          [ 0, 2, 0, 0 ],
                          [ 0, 0, 2, 0 ],
                          [ 0, 0, 0, 2 ]];
                           
        // Function call
        if (isScalarMatrix(mat))
            document.write("Yes");
        else
            document.write("No");
 
// This code is contributed by souravghosh0416.
</script>


Output

Yes

Time Complexity: O(N2), where N represents the number of rows and columns of the given matrix.
Auxiliary Space: O(1), no extra space is required, so it is a constant.



Last Updated : 01 Aug, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads