এবার আমরা 2D এরের সাহায্যে একটি ম্যাট্রিক্স ইনপুট নিয়ে তা স্কেলার ম্যাট্রিক্স কিনা তা বের করব।
আমরা ইতিমধ্যে দেখে ফেলেছি কিভাবে একটি ম্যাট্রিক্স প্রাইমারি ডায়াগোনাল কিনা তা বের করতে হয়। সেইমভাবে জাস্ট একটা কন্ডিশন যোগ করে আমরা চেক করে ফেলতে পারি একটি ম্যাট্রিক্স স্কেলার কিনা।
স্কেলার ম্যাট্রিক্স প্রাইমারি ডায়াগোনাল ম্যাট্রিক্স, আবার স্কেলার ম্যাট্রিক্স এ প্রাইমারি ডায়াগোনালে থাকা সবগুলো ভেলু সেইম থাকে। আমরা পূর্বের আর্টিকেলে প্রাইমারি ডায়াগোনালের কোডটিই ব্যাবহার করতে পারব শুধু প্রাইমারি ডায়াগোনালে থাকা সবগুলো ভেলু সেইম কিনা সেটা চেক করার জন্য একটি এক্সট্রা কন্ডিশন দিতে হবে।
#include<stdio.h>
int main()
{
int row,col;
scanf("%d %d",&row,&col);
int a[row][col];
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
scanf("%d",&a[i][j]);
}
}
int flag=1;
if(row != col)
{
flag=0;
}
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
if(i==j) // যদি প্রাইমারি ডায়াগোনালে থাকি তাহলে চেক করে দেখতে হবে প্রাইমারি ডায়াগোনালে থাকা সবগুলো ভেলু সেইম কিনা।
{
if(a[i][j] != a[0][0]) // চেক করে দেখা হচ্ছে এখন প্রাইমারি ডায়াগোনালের যেই ভেলুতে আছি তার সাথে প্রথম প্রাইমারি ডায়াগোনালের ভেলুটি সেইম কিনা।
{
flag=0; // যদি সেইম না হয় তাহলে ফ্ল্যাগ এর মধ্যে ০ রেখে দেওয়া হচ্ছে।
}
}
else if(a[i][j]!=0) // আর যদি প্রাইমারি ডায়াগোনালে না থাকি এবং ম্যাট্রিক্স এর ভেলু ০ না হয়
{
flag=0; // তাহলে এটি স্কেলার ম্যাট্রিক্স না, তাই ফ্ল্যাগ এর মধ্যে ০ রেখে দিচ্ছি।
}
}
}
if(flag==1) // সবশেষে চেক করছি ফ্ল্যাগ এর মধ্যে ১ আছে কিনা।
{
printf("Scalar Matrix\n"); // ১ থাকলে এটি একটি স্কেলার ম্যাট্রিক্স।
}
else
{
printf("Not Scalar matrix\n"); // আর ১ না থাকলে এটি একটি স্কেলার ম্যাট্রিক্স না।
}
return 0;
}