C Programming
  • মডিউল ১: বেসিক সিন্টেক্স, ভেরিয়েবলস এবং ডেটা টাইপ
    • মডিউল ১-০: সূচনা
    • মডিউল ১-১: বেসিক স্ট্রাকচার
    • মডিউল ১-২ + মডিউল ১-৩: প্রথম সি প্রোগ্রাম + সি আউটপুট
    • মডিউল ১-৪: প্রোগ্রাম রান করি
    • মডিউল ১-৫+ মডিউল ১-৬:ভেরিয়েবল এবং ডেটা টাইপ
    • মডিউল ১-৭+ মডিউল ১-৮: সি ইনপুট + এস্কেপ সিকুয়েন্স
    • মডিউল ১-৯+ মডিউল ১-১০: ডেটা টাইপ লিমিটেশন
    • মডিউল ১-১১: ভেরিয়েবল নামকরণের নিয়মাবলি
  • মডিউল ২ঃ অপারেটরস, কন্ডিশনাল স্টেটমেন্টস
    • মডিউল ২-০: সূচনা
    • মডিউল ২-১ঃ এরিথমেটিক অপারেটরস
    • মডিউল ২-২ঃ রিলেশনাল অপারেটরস
    • মডিউল ২-৩ঃ লজিকাল অপারেটরস
    • মডিউল ২-৪, ২-৫ঃ ইফ এলস
    • মডিউল ২-৬, ২-৭ঃ ইফ এলস লেডার
    • মডিউল ২-৮, ২-৯ঃ নেস্টেড ইফ এলস
  • মডিউল ৩ঃ লুপ
    • মডিউল ৩-০: সূচনা
    • মডিউল ৩-১, ৩-২: ফর লুপ টাইপ-১
    • মডিউল ৩-৩, ৩-৪: ফর লুপ টাইপ-২
    • মডিউল ৩-৫: ১ থেকে এন পর্যন্ত যোগফল
    • মডিউল ৩-6: লুপের সাথে কন্ডিশন
    • মডিউল ৩-৭, ৩-৮: ব্রেক, কন্টিনিউ স্টেটমেন্ট
    • মডিউল ৩-৯: While & Do While লুপ
  • মডিউল ৫ঃ কন্ডিশনাল স্টেটমেন্ট রিকেপ
    • মডিউল ৫-০ঃসূচনা
    • মডিউল ৫-১ঃ I. Welcome for you with Conditions
    • মডিউল ৫-২ঃ J. Multiples
    • মডিউল ৫-৩ঃ N. Char
    • মডিউল ৫-৪ঃ P. First digit !
    • মডিউল ৫-৫ঃ M. Capital or Small or Digit
    • মডিউল ৫-৬ঃ K. Max and Min
  • মডিউল ৬ঃ লুপ রিকেপ এবং নেস্টেড লুপ
    • মডিউল ৬-০: সূচনা
    • মডিউল ৬-১: ইনক্রিমেন্ট ডিক্রিমেন্ট অপারেটর
    • মডিউল ৬-২: ইভেন নাম্বারস
    • মডিউল ৬-৩: ইভেন, ওড, পজিটিভ, নেগেটিভ
    • মডিউল ৬-৪: ফিক্সড পাসওয়ার্ড
    • মডিউল ৬-৫, ৬-৬: ম্যাক্স, মিন
    • মডিউল ৬-৭: মাল্টিপ্লিকেশন টেবিল
    • মডিউল ৬-৮: ডিজিটস
    • মডিউল ৬-৯, ৬-১০: নেস্টেড ফর লুপ
  • মডিউল ৭ঃ ইন্ট্রোডাকশন টু এরে
    • মডিউল ৭-০: সূচনা
    • মডিউল ৭-১, ৭-২: এরে কি? কেন আমাদের এরে প্রয়োজন?
    • মডিউল ৭-৩,৭-৪: এরে এক্সেস করা
    • মডিউল ৭-৫,৭-৬: এরে ইনপুট আউটপুট
    • মডিউল ৭-৭: এরে ইনিশিয়ালাইজ করা
    • মডিউল ৭-৮: এরে রিভার্স করা
    • মডিউল ৭-৯: এরেতে সবগুলো ভেলু যোগ করা
  • মডিউল ৯ঃ অ্যারে অপারেশন
    • মডিউল ৯-০: সূচনা
    • মডিউল ৯-১ + ৯-২: ইনসার্ট ইলিমেন্ট
    • মডিউল ৯-৩ + ৯-৪: ডিলিট ইলিমেন্ট
    • মডিউল ৯-৫ + ৯-৬: রিভার্স অ্যারে
    • মডিউল ৯-৭ + ৯-৮: কপি অ্যারে
  • মডিউল ১০ঃ ইন্ট্রোডাকশন টু স্ট্রিং
    • মডিউল ১০-০: সূচনা
    • মডিউল ১০-১: স্ট্রিং কি?
    • মডিউল ১০-২: স্ট্রিং ইনিশিয়ালাইজ এবং প্রিন্ট
    • মডিউল ১০-৩: স্ট্রিং ইনপুট
    • মডিউল ১০-৪: স্ট্রিং ইনপুট স্পেস সহ
    • মডিউল ১০-৫: স্ট্রিং এর লেন্থ
    • মডিউল ১০-৬: ক্রিয়েট এ নিউ স্ট্রিং
    • মডিউল ১০-৭: লেটস ইউজ গেটলাইন
    • মডিউল ১০-৮: কাউন্ট
  • মডিউল ১১ঃ স্ট্রিং অপারেশন এবং ফিকোয়েন্সি এরে
    • মডিউল ১১-০ঃ সূচনা
    • মডিউল ১১-১ঃ স্ট্রিং কপি
    • মডিউল ১১-২, ১১-৩ঃ স্ট্রিং লেক্সিকোগ্রাফিকাল কম্পারিসন
    • মডিউল ১১-৪ঃ স্ট্রিং কনকেটিনেশন
    • মডিউল ১১-৫ঃ কাউন্টিং এরে অর ফ্রিকুয়েন্সি এরে
    • মডিউল ১১-৬ঃ কাউন্টিং ক্যারেক্টার
  • মডিউল ১৩: নেস্টেড লুপ রিক্যাপ
    • মডিউল ১৩-০ঃ সূচনা
    • মডিউল ১৩-১ঃ প্যাটার্ন ১
    • মডিউল ১৩-২ঃ প্যাটার্ন ২
    • মডিউল ১৩-৩ঃ প্যাটার্ন ৩
    • মডিউল ১৩-৪ঃ প্যাটার্ন ৪
    • মডিউল ১৩-৫+১৩-৬ঃ Sum of Two Values Equal X
    • মডিউল ১৩-৭+১৩-৮ঃ সিলেকশন সর্ট
  • মডিউল ১৪ঃ ফাংশন এবং পয়েন্টার
    • মডিউল ১৪-০ঃ সূচনা
    • মডিউল ১৪-১ঃ ফাংশন কি?
    • মডিউল ১৪-২ঃ রিটার্ন + প্যারামিটার
    • মডিউল ১৪-৩ঃ রিটার্ন + নো প্যারামিটার
    • মডিউল ১৪-৪ঃ নো রিটার্ন + প্যারামিটার
    • মডিউল ১৪-৫ঃ নো রিটার্ন + নো প্যারামিটার
    • মডিউল ১৪-৬ঃ ইউজফুল বিল্ট-ইন ফাংশন
    • মডিউল ১৪-৭ঃ স্কোপ্স
    • মডিউল ১৪-৮ঃ পয়েন্টার
  • মডিউল ১৫ঃ ফাংশন উইথ পয়েন্টার
    • মডিউল ১৫-০ঃ সূচনা
    • মডিউল ১৫-১ঃ পয়েন্টারস ইন সি
    • মডিউল ১৫-২ঃ কল বাই ভেলু
    • মডিউল ১৫-৩ঃ কল বাই রেফারেন্স
    • মডিউল ১৫-৪ঃ এরে এবং পয়েন্টার
    • মডিউল ১৫-৫ঃ ফাংশন এবং এরে
    • মডিউল ১৫-৬ঃ ফাংশন এবং স্ট্রিং
    • মডিউল ১৫-৭ঃ ফাংশন ইউথ এরে এস রেফারেন্স
  • মডিউল ১৭ঃ Recursion
    • মডিউল ১৭-১ঃ Call Stack
    • মডিউল ১৭-২ঃ রিকার্সন
    • মডিউল ১৭-৩ঃ Print From 1 to n Using Recursion
    • মডিউল ১৭-৪ঃ Print From 5 to 1 using Recursion
    • মডিউল ১৭-৫ঃArray Printing using Recursion
    • মডিউল ১৭-৬ঃ Print From 5 to 1 in Reverse Way
    • মডিউল ১৭-৭ঃ Length of a String using Recursion
  • মডিউল ১৮ঃ 2D এরে
    • মডিউল ১৮-০ঃ সূচনা
    • মডিউল ১৮-১ঃ 2D এরে কি?
    • মডিউল ১৮-২ঃ 2D এরে ইনপুট আউটপুট
    • মডিউল ১৮-৩ঃ 2D এরে প্রিন্টিং বাই রো এন্ড কলাম
    • মডিউল ১৮-৪ঃ ম্যাট্রিক্স এর প্রকারভেদ
    • মডিউল ১৮-৫ঃ জিরো অথবা নাল ম্যাট্রিক্স
    • মডিউল ১৮-৬ঃ ডায়াগোনাল ম্যাট্রিক্স ইউজিং 2D এরে
    • মডিউল ১৮-৭ঃ স্কেলার ম্যাট্রিক্স ইউজিং 2D এরে
    • মডিউল ১৮-৮ঃ ইউনিট ম্যাট্রিক্স ইউজিং 2D এরে
  • মডিউল ১৯ঃ রিকারশন রিকেপ
    • মডিউল ১৯-০ঃ সূচনা
    • মডিউল ১৯-১ঃ মিরর এরে
    • মডিউল ১৯-২ঃ সাম অফ এ ম্যাট্রিক্স
    • মডিউল ১৯-৩ঃ প্রিন্ট ডিজিটস ইউজিং রিকারশন
    • মডিউল ১৯-৪ঃ কাউন্ট ভাওয়েলস
    • মডিউল ১৯-৫ঃ ফেক্টরিয়াল
    • মডিউল ১৯-৬ঃ ম্যাক্স নাম্বার
    • মডিউল ১৯-৭ঃ পেলিনড্রোম
Powered by GitBook
On this page
  1. মডিউল ১৮ঃ 2D এরে

মডিউল ১৮-৬ঃ ডায়াগোনাল ম্যাট্রিক্স ইউজিং 2D এরে

এবার আমরা 2D এরের সাহায্যে একটি ম্যাট্রিক্স ইনপুট নিয়ে তা প্রাইমারি ডায়াগোনাল বা সেকেন্ডারি ডায়াগোনাল ম্যাট্রিক্স কিনা তা বের করব।

প্রাইমারি ডায়াগোনাল ম্যাট্রিক্সঃ

আমরা যদি একটি 2D এরেতে প্রাইমারি ডায়াগোনাল এর ইন্ডেক্সগুলো খেয়াল করি

0 0

0 1

0 2

1 0

1 1

1 2

2 0

2 1

2 2

তাহলে দেখতে পাব ইন্ডেক্সে রো এবং কলাম সেইম হচ্ছে। অর্থাৎ আমরা যদি দেখি ইনডেক্সে রো এবং কলাম সেইম তাহলে বুঝতে পারব আমরা এখন প্রাইমারি ডায়াগোনাল এর উপরে আছি। তাহলে এভাবে আমরা চেক করে ফেলতে পারি একটি ম্যাট্রিক্স প্রাইমারি ডায়াগোনাল কিনা। শুরুতেই আমরা চেক করব ম্যাট্রিক্সটি স্কয়ার কিনা, স্কয়ার না হলে ডায়াগোনাল ম্যাট্রিক্স হবে না। তারপর আমরা পুরো ম্যাট্রিক্স এ যেয়ে যখনি আমরা প্রাইমারি ডায়াগোনাল এর উপরে থাকব না তখনি চেক করে দেখব ওখানে ভেলু জিরো আছে কিনা। যদি জিরো না থাকে তাহলে সেটি প্রাইমারি ডায়াগোনাল ম্যাট্রিক্স হবে না।

#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)        // যদি রো ইন্ডেক্স এবং কলাম ইন্ডেক্স সেইম হয় তারমানে এখন আমরা প্রাইমারি ডায়াগোনাল এর উপরে আছি।
            {
                continue;    // প্রাইমারি ডায়াগোনালে আমাদের চেক করার কিছু নেই তাই কন্টিনিউ করছি।
            }
            if(a[i][j]!=0)   // যদি প্রাইমারি ডায়াগোনালে না থাকি এবং ম্যাট্রিক্স এর ভেলু ০ না হয় 
            {
                flag=0;    // তাহলে এটি প্রাইমারি ডায়াগোনাল ম্যাট্রিক্স না, তাই ফ্ল্যাগ এর মধ্যে ০ রেখে দিচ্ছি। 
            }
        }
    }
    if(flag==1)       // সবশেষে চেক করছি ফ্ল্যাগ এর মধ্যে ১ আছে কিনা। 
    {
        printf("Primary Diagonal\n");   // ১ থাকলে এটি একটি প্রাইমারি ডায়াগোনাল ম্যাট্রিক্স। 
    } 
    else 
    {
        printf("Not Primary Diagonal\n");  // আর ১ না থাকলে এটি একটি প্রাইমারি ডায়াগোনাল ম্যাট্রিক্স না। 
    }
    return 0;
}

সেকেন্ডারি ডায়াগোনাল ম্যাট্রিক্সঃ

আমরা যদি একটি 2D এরেতে সেকেন্ডারি ডায়াগোনাল এর ইন্ডেক্সগুলো খেয়াল করি

0 + 0 = 0

0 + 1 = 1

0 + 2 = 2

1 + 0 = 1

1 + 1 = 2

1 + 2 = 3

2 + 0 = 2

2 + 1 = 3

2 + 2 = 4

তাহলে দেখতে পাব ইন্ডেক্সে রো এবং কলাম এর যোগফল সেইম হচ্ছে আর তা হচ্ছে রো থেকে ১ কম। সেকেন্ডারি ডায়াগোনাল ছাড়া অন্য কোথাও রো এবং কলাম এর যোগফল রো-১ এর সমান হচ্ছে না। অর্থাৎ আমরা যদি দেখি ইনডেক্সে রো এবং কলামের যোগফল রো-১ এর সমান তাহলে বুঝতে পারব আমরা এখন সেকেন্ডারি ডায়াগোনাল এর উপরে আছি। তাহলে এভাবে আমরা চেক করে ফেলতে পারি একটি ম্যাট্রিক্স সেকেন্ডারি ডায়াগোনাল কিনা। শুরুতেই আমরা চেক করব ম্যাট্রিক্সটি স্কয়ার কিনা, স্কয়ার না হলে ডায়াগোনাল ম্যাট্রিক্স হবে না। তারপর আমরা পুরো ম্যাট্রিক্স এ যেয়ে যখনি আমরা সেকেন্ডারি ডায়াগোনাল এর উপরে থাকব না তখনি চেক করে দেখব ওখানে ভেলু জিরো আছে কিনা। যদি জিরো না থাকে তাহলে সেটি সেকেন্ডারি ডায়াগোনাল ম্যাট্রিক্স হবে না।

#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==row-1)        // যদি রো ইন্ডেক্স এবং কলাম ইন্ডেক্স এর যোগফল রো-১ এর সমান হয় তারমানে এখন আমরা সেকেন্ডারি ডায়াগোনাল এর উপরে আছি।
            {
                continue;    // সেকেন্ডারি ডায়াগোনালে আমাদের চেক করার কিছু নেই তাই কন্টিনিউ করছি।
            }
            if(a[i][j]!=0)   // যদি সেকেন্ডারি ডায়াগোনালে না থাকি এবং ম্যাট্রিক্স এর ভেলু ০ না হয় 
            {
                flag=0;    // তাহলে এটি সেকেন্ডারি ডায়াগোনাল ম্যাট্রিক্স না, তাই ফ্ল্যাগ এর মধ্যে ০ রেখে দিচ্ছি। 
            }
        }
    }
    if(flag==1)       // সবশেষে চেক করছি ফ্ল্যাগ এর মধ্যে ১ আছে কিনা। 
    {
        printf("Secondary Diagonal\n");   // ১ থাকলে এটি একটি সেকেন্ডারি ডায়াগোনাল ম্যাট্রিক্স। 
    } 
    else 
    {
        printf("Not Secondary Diagonal\n");  // আর ১ না থাকলে এটি একটি সেকেন্ডারি ডায়াগোনাল ম্যাট্রিক্স না। 
    } 
    return 0;
}

Previousমডিউল ১৮-৫ঃ জিরো অথবা নাল ম্যাট্রিক্সNextমডিউল ১৮-৭ঃ স্কেলার ম্যাট্রিক্স ইউজিং 2D এরে

Last updated 1 year ago