কম্পিউটার

C++ প্রোগ্রাম ম্যাট্রিক্সকে ফাংশনে পাস করে দুটি ম্যাট্রিক্সকে গুন করতে


একটি ম্যাট্রিক্স হল সংখ্যার একটি আয়তক্ষেত্রাকার বিন্যাস যা সারি এবং কলামের আকারে সাজানো হয়।

ম্যাট্রিক্সের একটি উদাহরণ নিম্নরূপ।

একটি 3*4 ম্যাট্রিক্সে 3টি সারি এবং 4টি কলাম নিচে দেখানো হয়েছে৷

8 6 3 5
7 1 9 2
5 1 9 8

একটি প্রোগ্রাম যা ম্যাট্রিক্সকে ফাংশনে পাস করে দুটি ম্যাট্রিক্সকে গুণ করে তা নিম্নরূপ।

উদাহরণ

#include<iostream>
using namespace std;
void MatrixMultiplication(int a[2][3],int b[3][3]) {
   int product[10][10], r1=2, c1=3, r2=3, c2=3, i, j, k;
   if (c1 != r2) {
      cout<<"Column of first matrix should be equal to row of second matrix";
   } else {
      cout<<"The first matrix is:"<<endl;
      for(i=0; i<r1; ++i) {
         for(j=0; j<c1; ++j)
         cout<<a[i][j]<<" ";
         cout<<endl;
      }
      cout<<endl;
      cout<<"The second matrix is:"<<endl;
      for(i=0; i<r2; ++i) {
         for(j=0; j<c2; ++j)
         cout<<b[i][j]<<" ";
         cout<<endl;
      }
      cout<<endl;
      for(i=0; i<r1; ++i)
      for(j=0; j<c2; ++j) {
         product[i][j] = 0;
      }
      for(i=0; i<r1; ++i)
      for(j=0; j<c2; ++j)
      for(k=0; k<c1; ++k) {
         product[i][j]+=a[i][k]*b[k][j];
      }
      cout<<"Product of the two matrices is:"<<endl;
      for(i=0; i<r1; ++i) {
         for(j=0; j<c2; ++j)
         cout<<product[i][j]<<" ";
         cout<<endl;
      }
   }
}
int main() {
   int a[2][3] = { {2, 4, 1} , {2, 3, 9} };
   int b[3][3] = { {1, 2, 3} , {3, 6, 1} , {2, 9, 7} };
   MatrixMultiplication(a,b);
   return 0;
}

আউটপুট

The first matrix is:
2 4 1
2 3 9
The second matrix is:
1 2 3
3 6 1
2 9 7
Product of the two matrices is:
16 37 17
29 103 72

উপরের প্রোগ্রামে, দুটি ম্যাট্রিক্স a ​​এবং b নিম্নলিখিতভাবে main() ফাংশনে আরম্ভ করা হয়েছে।

int a[2][3] = { {2, 4, 1} , {2, 3, 9} };
int b[3][3] = { {1, 2, 3} , {3, 6, 1} , {2, 9, 7} };

MatrixMultiplication() ফাংশনটিকে a এবং b এর মান দিয়ে ডাকা হয়। এটি নীচে দেখা যাচ্ছে৷

MatrixMultiplication(a,b);

MatrixMultiplication() ফাংশনে, যদি প্রথম ম্যাট্রিক্সের কলামের সংখ্যা দ্বিতীয় ম্যাট্রিক্সের সারির সংখ্যার সমান না হয় তাহলে গুণন করা যাবে না। এই ক্ষেত্রে একটি ত্রুটি বার্তা প্রিন্ট করা হয়. এটি নিম্নরূপ দেওয়া হল।

if (c1 != r2) {
   cout<<"Column of first matrix should be equal to row of second matrix";
}

একটি নেস্টেড ফর লুপ ব্যবহার করে ম্যাট্রিক্স a ​​এবং b উভয়ই প্রদর্শিত হয়। এটি নিম্নলিখিত কোড স্নিপেট দ্বারা প্রদর্শিত হয়৷

cout<<"The first matrix is:"<<endl;
for(i=0; i<r1; ++i) {
   for(j=0; j<c1; ++j)
   cout<<a[i][j]<<" ";
   cout<<endl;
}
cout<<endl;
cout<<"The second matrix is:"<<endl;
for(i=0; i<r2; ++i) {
   for(j=0; j<c2; ++j)
   cout<<b[i][j]<<" ";
   cout<<endl;
}
cout<<endl;

এর পরে, গুণফল[][] ম্যাট্রিক্সটি 0-তে আরম্ভ করা হয়। তারপর a এবং b 2টি ম্যাট্রিক্সের গুণফল বের করতে একটি নেস্টেড ফর লুপ ব্যবহার করা হয়। এটি নীচের কোড স্নিপেটে প্রদর্শিত হয়৷

for(i=0; i<r1; ++i)
for(j=0; j<c2; ++j) {
   product[i][j] = 0;
}
for(i=0; i<r1; ++i)
for(j=0; j<c2; ++j)
for(k=0; k<c1; ++k) {
   product[i][j]+=a[i][k]*b[k][j];
}

পণ্যটি পাওয়ার পরে, এটি মুদ্রিত হয়। এটি নিম্নরূপ দেখানো হয়েছে৷

cout<<"Product of the two matrices is:"<<endl;
for(i=0; i<r1; ++i) {
   for(j=0; j<c2; ++j)
   cout<<product[i][j]<<" ";
   cout<<endl;
}

  1. একটি C++ ফাংশনে দ্বিমাত্রিক অ্যারে পাস করা

  2. C# প্রোগ্রাম দুটি ম্যাট্রিক্স গুণ করতে

  3. পাইথন প্রোগ্রাম দুটি ম্যাট্রিক্স গুণ করতে

  4. পাইথন ব্যবহার করে কিভাবে দুটি ম্যাট্রিক্স গুণ করবেন?