مثال از بخش آرایه ها (ضرب دو ماتریس)

تازه ها

مثال از بخش آرایه ها (ضرب دو ماتریس)

نظرات ()

 

سوال :  برنامه ای بنویسید که حاصل ضرب دو ماتریس [3*4],[4*3] را محاسبه کند.





سوال :

برنامه ای بنویسید که حاصل ضرب دو ماتریس سه در چهار را محاسبه کند.

توضیحات :

برای محاسبه حاصل ضرب دو ماتریس مهم ترین شرط برابر بودن تعداد سطر ماتریس اول با تعداد ستون ماتریس دوم میباشد. حال پس از بررسی شرط بالا طبق فرمول زیر میتوان حاصل ضرب دو ماتریس را محاسبه کرد:

 



دوستان دقت کنید فرمول بالا برای استفاده در ریاضیات میباشد و برای استفاده در برنامه نویسی باید به الگوریتم آن پی برد که در ذیل به شرح مختصر الگوریتم ضرب دو ماتریس میپردازیم :

در قسمت اول و دوم برنامه  مقادیر دو ماتریس را از کاربر دریافت میشود.

در قسمت سوم :

اگر در کدهای نوشته شده این برنامه دقت کرده باشید در قسمت محاسبات سه حلقه for  تو در تو داریم که در داخلی ترین حلقه مجموع سطر ماتریس اول در ستون ماتریس دوم محاسبه و در T قرار میگیرد. تعداد تکرار این حلقه با تعداد ستون ماتریس اول و سطر ماتریس دوم برابر است. پس از هر بار محاسبه مجموع سطر در ستون T باید برابر صفر شود .
دو حلقه دیگر هر کدام به ترتیب وظایف شمارش ستون و سطر را دارا میباشند.

به این مسئله هم توجه کنید که حاصل یک ماتریس [x*y] در یک ماتریس [n*m]  برابر با یک ماتریس [x*m] میباشد.  

در قسمت چهارم نیز مقادیر محاسبه شده که در آرایه Z قرار دارد را در خروجی نمایش میدهد.



کد:

 

#include "stdafx.h"
#include
#include
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    int a[3][4],b[4][3],z[3][3],i,j,k;
    system("cls");

        cout<<"                              www.Cpp-Prog.Tk";
        //**********************************************************
        cout<<" MAGHADIRE MATRISE [3,4] RA VARED KONID : ";
   
        for(i=0;i<3;i++){
            for(j=0;j<4;j++){
                cout<<" [ "<
        for(i=0;i<4;i++){
            for(j=0;j<3;j++){
                cout<<" [ "<         for(i=0;i<3;i++){
            for(j=0;j<3;j++)
                cout<<" "<             cout<         }

    _getch();
    return 0;
}




منبع : لینک منبع


به گروه ما هم سر بزنید