خوب بالاخره جواب رو پیدا کردم
می ذارم اینجا تا دوستان هم اگر نیاز داشتن بتونن ازش استفاده کنن
#include<iostream.h>
void main()
{
int a[3][3] , b[3][3] , c[3][3];
int i , j , k;
cout<<"Enter Matrix A";
for( i = 0 ; i < 3 ; i++)
for( j = 0 ; j < 3 ; j++)
cin>>a[i][j];
cout<<"Enter Matrix B";
for( i = 0 ; i < 3 ; i++)
for( j = 0 ; j < 3 ; j++)
cin>>b[i][j];
for( i = 0 ; i < 3 ; i++)
for( j = 0 ; j < 3 ; j++)
{
c[i][j] = 0;
for( k = 0 ;k < 3 ; k++)
c[i][j] += a[i][k]*b[k][j];
}
cout<<"The resultant matrix is ";
for( i = 0 ; i < 3 ; i++)
{
for( j = 0 ; j < 3 ; j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
}
اما توضیحات این کد برای کسانی که مثل من مشکل دارن
ما سه تا ارایه دو بعدی داریم
که دو تای اول رو با نام ماتریکس A,B مشخص کردیم که بهش اعداد می دیم
و سومین ارایه که با نام ارایه C مشخص شده محل قرار گیری حاصل ضرب هست
cout<<"Enter Matrix A";
for( i = 0 ; i < 3 ; i++)
for( j = 0 ; j < 3 ; j++)
cin>>a[i][j];
خوب در این قسمت ما از کاربر می خوایم که عدد وارد کنه تا خانه آرایه ها پر بشه
به این صورت که حلقه ما سطر اول رو میگیره و پر می کنه بعد میره سراغ سطر دوم
یعنی زمانی که I=0 هست J ستون های خودش رو پر میکنه
اگر ورودی ما
1
2
3
باشه
نوع قرار گیری اعداد در ارایه به این شکل میشه
3 2 1
هینطور حلقه ادامه پیدا می کنه تا به تعداد فضای ارایه جاگذاری انجام بشه و ماتریس اول ما شکل بگیره
cout<<"Enter Matrix B";
for( i = 0 ; i < 3 ; i++)
for( j = 0 ; j < 3 ; j++)
cin>>b[i][j];
این هم ماتریس دوم رو تشکیل میده به همون شکل بالا
for( i = 0 ; i < 3 ; i++)
for( j = 0 ; j < 3 ; j++)
{
c[i][j] = 0;
for( k = 0 ;k < 3 ; k++)
c[i][j] += a[i][k]*b[k][j];
}
در این قسمت شک دارم ممکنه اشتباه داشته باشه اگر اشتباهی بود دوستان راهنمایی کنن تا هم من یاد بگیرم هم تصحیح شه
یک حلقه تو در تو شکل میدیم و بهش میگیم که یک ارایه 3*3 تشکیل بده که فضا هاش خالی هستند
در قسمت دو براکت که سویچ هم میشه گفت ماتریس (آرایه ) سوم برابر با صفر هست
یک حلقه تشکیل میدیم که K رو در ماتریس قرار بده با دستورات داخل براکت اما نکته اصل ماجرا اینجاست
ما اینجا میگیم که ماتریس a رو با سطر i ستون k در ماتریس b با سطر k در ستون j ضرب کنه و بریزه تو ماتریس C
حالا اینجا چه اتفاقی می افته
می دونیم که ضرب ماتریس سطر اول در ستون اول ماتریس دوم هست
بنابراین سطر i با اندیس صفر و ستون k ( رو که بصورت حلقه بهش یک واحد یک واحد بهش اضافه میشه) رو در ماتریس دوم با سطر متغییر k و ستون j (که ثابت هست) ضرب کنه
یعنی اینکه در ماتریس A سطر برای بار اول ثابت هست و فقط ستون ها متغییر هست
و در ماتریس b سطر ها متغییر هست و ستون ثابت
cout<<"The resultant matrix is ";
for( i = 0 ; i < 3 ; i++)
{
for( j = 0 ; j < 3 ; j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
و اخرین قسمت که دستور میده که این حلقه تو در تو شکل بگیره و اندیس ها تکون بخورن و با این کار بریزن تو ماتریس c
اگر جایی ایراد داشت ممنون میشم دوستان راهنمایی کنن تا بتونم بیشتر یاد بگیرم و هم مطلب رو ویرایش کنم