সি প্রোগ্রামিং ভাষা ব্যবহার করে দুটি ম্যাট্রিক্স এর গুনফল নির্ণয় করা কিছু সাধারন প্রোগ্রামিং সমস্যা গুলোর মধ্যে একটি । এই সমস্যার সমাধান করাটা একটু বড় হলেও সহজ আর মজার । এটা একটা সোজা প্রয়োগ এর প্রশ্ন ।
বুঝার সুবিধার্থে আমি কোডটাকে কয়েকটা ভাগে বিভক্ত করে বর্ণনা করব ।
স্টেপ ১ (ইনপুট নেয়া) :
ইনপুট নেয়ার জন্য আমরা প্রথমে ৪ টা ভেনিয়েবল নিব । r , c , r1 , c1 . scanf() ফাংশন ব্যবহার করে আমরা ইনপুটা গুলো নিব । ( লাইন ৪ ও লাইন ১৬ ) । পরে আমরা দুইটা এরে নিব । r * c এবং r1 * c1 সাইজের । (লাইন ৬ আর লাইন ১৭ ) । পরে আমরা ৮ থেকে ১৪ লেইনের মাধ্যমে ১ম এরে কে ইনপুট নিব এবং ১৮ থেকে ১৪ লাইন দিয়ে ২য় এরে কে ইনপুট নিব । সুতরাং আমাদের ইনপুট অংশ টুকু নিম্নরুপ :
- #include<stdio.h>
- int main()
- {
- int r,c,c1,r1,i,j;
- scanf(“%d%d”,&r,&c);
- int arr[r][c];
- for(i=0;i<r;i++)
- {
- for(j=0;j<c;j++)
- {
- scanf(“%d”,&arr[i][j]);
- }
- }
- scanf(“%d%d”,&r1,&c1);
- int arr2[r1][c1];
- for(i=0;i<r1;i++)
- {
- for(j=0;j<c1;j++)
- {
- scanf(“%d”,&arr2[i][j]);
- }
- }
- }
স্টেপ ২ ( লুপিং ) :
এখানেই আমরা মুল কাজটা করব । আমরা জানি যদি দুটি ম্যট্রিক্স এর প্রথমটার কলাম আর দ্বিতীয়টা রো নাম্বার সমান না হয় তাহলে গুন করা সম্ভব না । আর গুন করার পরে উত্তর হিসাবে আমরা যে ম্যট্রিক্স পাব তার সােইজ হবে প্রথমটার রো আর দ্বিতীয়টা কলাম নিয়ে গঠিত । সুতরাং আমাদের প্রথমে কন্ডিশন দিতে হবে । লাইন নং ২৬ । যদি কন্ডিশন সত্য হয় তবে ans[r][c1] সাইজের একটা এরে নিব উত্তর জমা রাখার জন্য । ans array প্রত্যেকটা উপাদান শূন্য করে নিতে হবে ।
যেহেতু আমাদের উত্তর এর রো সংখ্য r থেকে বড় না , সুতরাং আমরা একটা লুপ নিতে পারি যা ০ থেকে r-1 পর্যন্ত যাবে । এই লুপের মধ্যে এখন আরেকটা নেস্টেড লুপ দিতে হবে । যেহেতু আমাদের উত্তর এ কলাম সংখ্যা c1 এর বেশি নং , তাই আমরা দিত্বীয় লুপটা ০ থেকে c1-1 পর্যন্ত ঘুরাবো ।
এখন এই লুপের মধ্যে আরেকটি লুপ দিব । এই লুপটাই আমাদের সবচেয়ে গুরুত্বপূর্ন কাজটা করে দিবে। এর মাধ্যমে আমরা দুটি ম্যাট্রিক্স এরই ই|লিমেন্ট গুলো নিয়ে গুন করতে পারব । প্রতি সময় গুণের পরে আমারা গুনফল ans[i][j] পজিশনে যোগ করব করব ।
( লাইন ২৬ থেকে৫০ )
- #include<stdio.h>
- int main()
- {
- int r,c,c1,r1,i,j,k;
- scanf(“%d%d”,&r,&c);
- int arr[r][c];
- for(i=0;i<r;i++)
- {
- for(j=0;j<c;j++)
- {
- scanf(“%d”,&arr[i][j]);
- }
- }
- scanf(“%d%d”,&r1,&c1);
- int arr2[r1][c1];
- for(i=0;i<r1;i++)
- {
- for(j=0;j<c1;j++)
- {
- scanf(“%d”,&arr2[i][j]);
- }
- }
- if(c==r1)
- {
- int ans[r][c1];
- for(i=0;i<r;i++)
- {
- for(j=0;j<c1;j++)
- {
- ans[i][j]=0;
- }
- }
- for(i=0;i<r;i++)
- {
- for(j=0;j<c1;j++)
- {
- for(k=0;k<r1;k++)
- {
- ans[i][j]+=arr[i][k]*arr2[k][j];
- }
- }
- }
- }
- return 0;
- }
শেষ ধাপ ( আউটপুট ) :
যখন আমাদের সব হিসাব নিকাশ শেষ হবে তখন আমরা লাইন ৫১ থেকে ৫৯ এর মাধ্যমে উত্তর প্রিস্ট করে দিব ।
- #include<stdio.h>
- int main()
- {
- int r,c,c1,r1,i,j,k;
- scanf(“%d%d”,&r,&c);
- int arr[r][c];
- for(i=0;i<r;i++)
- {
- for(j=0;j<c;j++)
- {
- scanf(“%d”,&arr[i][j]);
- }
- }
- scanf(“%d%d”,&r1,&c1);
- int arr2[r1][c1];
- for(i=0;i<r1;i++)
- {
- for(j=0;j<c1;j++)
- {
- scanf(“%d”,&arr2[i][j]);
- }
- }
- if(c==r1)
- {
- int ans[r][c1];
- for(i=0;i<r;i++)
- {
- for(j=0;j<c1;j++)
- {
- ans[i][j]=0;
- }
- }
- for(i=0;i<r;i++)
- {
- for(j=0;j<c1;j++)
- {
- for(k=0;k<r1;k++)
- {
- ans[i][j]+=arr[i][k]*arr2[k][j];
- }
- }
- }
- for(i=0;i<r;i++)
- {
- for(j=0;j<c1;j++)
- {
- printf(“%d “,ans[i][j]);
- }
- printf(“n”);
- }
- }
- return 0;
- }
আজ এ পর্যন্তই । অতি শিঘ্রই বড় ধরনের কোডিং সিরিজ নিয়ে হাজির হবো । হ্যাপি কোডিং । <3
recursion die matrix er determinant ber korar program chai
রিকার্শন এর মাধ্যমে ম্যাট্রিক্স এর Determinant নির্ণয় করার পদ্ধতি : https://iishanto.com/n-x-n/