# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها >  ضرب دو ماتریس

## Mobtadi_2006

الگوریتم ضرب دو ماتریس

----------


## abdollahashjaa

سلام
دو حلقه داخل هم یکی برای حرکت روی ستون ها و یکی برای سطر ها بقیه اش هم که خودت میدونی
موفق باشید

----------


## bahram_222222

#include <stdio.h>
#include <conio.h>
int main()
{
     int mat1[2][3], mat2[3][4], mat3[2][4]={0} ;
     int i,j,k,l ;
     clrscr();
     //read mat1
     for(i=0 ; i<2 ; i++)
       for(j=0 ; j<3 ;j++) {
	 printf("tenter mat1[%d][%d]: ",i,j);
	 scanf("%d",&mat1[i][j]) ;
     }
     //read mat2
     for(i=0 ; i<3 ; i++)
       for(j=0 ; j<4 ;j++) {
	 printf("enter mat2[%d][%d]: ",i,j);
	 scanf("%d",&mat2[i][j]) ;
       }
     //multiply mat1 by mat2
     for(i=0 ; i<2 ; i++)
	for(j=0 ; j<4 ;j++) {
	   mat3[i][j]=0 ;
	   for(k=0 ;k<3 ; k++)
	    mat3[i][j] = mat3[i][j]+mat1[i][k]*mat2[k][j];
	}
     printf("\n the produc of mat1 & mat2") ;
     printf(" is :\n\n") ;
     for(i=0 ;i<2 ;i++) {
       for(j=0 ; j<4 ;j++)
	  printf("%5d", mat3[i][j]) ;
       printf("\n") ;
     }
     getch();
     return 0;
}

----------


## mohandese_hiclass

آقای بهرام اینی که شما نوشتید برنامه هست نه الگوریتم سعی کنید به جای سورس شبه کد بنویسید تا فرد سوال کننده با سلیقه خودش کد بنویسه و روش هم کمی فکر کنه البته من این حرفو به خاطر کسی میگم که سوالو پرسیده
http://www.algorithmnevis.com/forum/index.php?topic=7.0

----------


## Sunny Girl

> #include <stdio.h>
> #include <conio.h>
> int main()
> {
>      int mat1[2][3], mat2[3][4], mat3[2][4]={0} ;
>      int i,j,k,l ;
>      clrscr();
>      //read mat1
>      for(i=0 ; i<2 ; i++)
> ...


سلام
میشه لطفا الگوریتم (نه برنامه) ضرب دو ماتریس رو هم بنویسید؟ من این سوال رو مطرح کردم و مدیر بخش من رو به این قسمت ارجاع دادن، اما من الگوریتم فارسی رو میخوام  :ناراحت:

----------


## pesar irooni

کل الگوریتم همین هستش
فرض میکنیم ماتریس اول با ابعاد n*k و ماتریس دوم با ابعاد k*m باشد که حاصل ماتریسی میشود با ابعاد n*m که هر درایه آن به این صورت به دست آمده "سطر i ام ضرب در ستون j ام" که در خط آخر الگوریتم بوضوح مشاهده میشود.
for i=1 to n
  for j=1 to m
    for L=1 to K
 mat3[i,j] = mat3[i,j] + mat1[i,L] * mat2[L,j]

----------


## mohammadnkh

سلام لطفا" الگوریتم برنامه فرودگاه(landweber)  رو بنویسید!
با تشکر...

----------


## Abtin@

سلام
ببخشید الان اگه بخواییم یک کد برای یک ماتریس مربعی بنویسیم که اعداد خودش را مقایسه کند وکوچکترین عدد وهمین طور بزرگترین عدد برای زبان سیشارپ چطوری کدش رو بزنیم

----------


## the king

> سلام
> ببخشید الان اگه بخواییم یک کد برای یک ماتریس مربعی بنویسیم که اعداد خودش را مقایسه کند وکوچکترین عدد وهمین طور بزرگترین عدد برای زبان سیشارپ چطوری کدش رو بزنیم


این سوال رو باید در انجمن زبان *#C* مطرح کنید. اول دو تا متغیر برای نگهداری مقدار حداقل مثلا min و مقدار حداکثر مثلا max تعریف می کنید و به هر دو مقدار یکی از خونه های ماتریس رو می دهید.
مهم نیست کدوم سطر و ستون باشه، مثلا مقدار خانه [0,0]
بعد داخل دو حلقه تو در تو در یکی سطر ها رو پیمایش می کنید و در یکی ستون ها، مثلا با x ستون ها و با y سطر ها، مثلا اگر ماتریس n در n باشه، از 0 الی n - 1 رو برای x و y پیمایش می کنید. 
سپس داخل حلقه داخلی بررسی میکنید که :
اگر مقدار min از مقدار اون خونه [y,x] بیشتر بود مقدار اون خونه داخلش قرار بگیره.
و اگر مقدار max از مقدار اون خونه [y,x] کمتر بود مقدار اون خونه داخلش قرار بگیره.
وقتی اجرای این حلقه های تو در تو تموم بشه مقادیر حداقل و حداکثر داخل min و max بدست اومدن.

----------

