কম্পিউটার টিউটোরিয়াল

C++-এ আইডেমপটেন্ট ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

একটি ম্যাট্রিক্স M[r][c] দেওয়া আছে, 'r' নির্দেশ করে রো সংখ্যা এবং 'c' নির্দেশ করে কলাম সংখ্যা যাতে r = c একটি স্কোয়ার ম্যাট্রিক্স বানাচ্ছে। আমাদের যাচাই করতে হবে দেওয়া স্কোয়ার ম্যাট্রিক্সটি একটি আইডেমপটেন্ট ম্যাট্রিক্স কিনা।

আইডেমপটেন্ট ম্যাট্রিক্স (Idempotent Matrix)

একটি ম্যাট্রিক্স 'M' কে আইডেমপটেন্ট ম্যাট্রিক্স বলা হয় যদি এবং কেবল যদি ম্যাট্রিক্স 'M' নিজের সাথে গুণ করলে একই ম্যাট্রিক্স 'M' ফিরে আসে অর্থাৎ M * M = M.

নিচের উদাহরণে দেখানো আছে -

C++-এ আইডেমপটেন্ট ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

আমরা বলতে পারি যে উপরের ম্যাট্রিক্সটি নিজের সাথে গুণ করলে একই ম্যাট্রিক্স ফিরিয়ে দিচ্ছে; অতএব ম্যাট্রিক্সটি আইডেমপটেন্ট ম্যাট্রিক্স।

উদাহরণ

ইনপুট: m[3][3] = { {2, -2, -4}, {-1, 3, 4}, {1, -2, -3} }
আউটপুট: Idempotent

ইনপুট: m[3][3] == { {3, 0, 0}, {0, 2, 0}, {0, 0, 3} }
আউটপুট: Not Idempotent

অ্যালগরিদম

শুরু
    স্টেপ ১ -> #define size 3 ম্যাক্রো ডিফাইন করো
    স্টেপ ২ -> ম্যাট্রিক্স মাল্টিপ্লিকেশনের ফাংশন ডিক্লেয়ার করো
        void multiply(int arr[][size], int res[][size])
        লুপ i = 0 থেকে i < size এবং i++ পর্যন্ত
            লুপ j = 0 থেকে j < size এবং j++ পর্যন্ত
                res[i][j] = 0 সেট করো
                লুপ k = 0 থেকে k < size এবং k++ পর্যন্ত
                    res[i][j] += arr[i][k] * arr[k][j] সেট করো
                এন্ড
            এন্ড
        এন্ড
    স্টেপ ৩ -> আইডেমপটেন্ট কিনা চেক করার ফাংশন ডিক্লেয়ার করো
        bool check(int arr[][size])
        int res[size][size] ডিক্লেয়ার করো
        multiply(arr, res) কল করো
        লুপ i = 0 থেকে i < size এবং i++ পর্যন্ত
            লুপ j = 0 থেকে j < size এবং j++ পর্যন্ত
                IF (arr[i][j] != res[i][j])
                    return false
                এন্ড
            এন্ড
        এন্ড
        return true
    স্টেপ ৪ -> main()-এ
        int arr[size][size] = {{1, -1, -1}, {-1, 1, 1}, {1, -1, -1}} ডিক্লেয়ার করো
        IF (check(arr))
            প্রিন্ট its an idempotent matrix
        এলস
            প্রিন্ট its not an idempotent matrix
স্টপ

উদাহরণ (C++ কোড)

#include <bits/stdc++.h>
#define size 3
using namespace std;

// ম্যাট্রিক্স মাল্টিপ্লিকেশন
void multiply(int arr[][size], int res[][size]) {
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            res[i][j] = 0;
            for (int k = 0; k < size; k++)
                res[i][j] += arr[i][k] * arr[k][j];
        }
    }
}

// আইডেমপটেন্ট কিনা চেক করো
bool check(int arr[][size]) {
    int res[size][size];
    multiply(arr, res);
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
            if (arr[i][j] != res[i][j])
                return false;
    return true;
}

int main() {
    int arr[size][size] = {{1, -1, -1},
                           {-1, 1, 1},
                           {1, -1, -1}};
    if (check(arr))
        cout << "its an idempotent matrix";
    else
        cout << "its not an idempotent matrix";
    return 0;
}

আউটপুট

its an idempotent matrix
  1. সি++-এ অ্যারে বিটোনিক (Bitonic) কিনা তা যাচাই করার প্রোগ্রাম

  2. C++-এ ম্যাট্রিক্স লোয়ার ট্রায়্যাঙ্গুলার কিনা তা যাচাই করার প্রোগ্রাম

  3. C++-এ ইনভোলিউটরি ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

  4. C++-এ ডায়াগোনাল এবং স্ক্যালার ম্যাট্রিক্স যাচাই করার প্রোগ্রাম