PDA

View Full Version : سوال: راهنمایی در این کد ضرب ماتریس خروجی چی رو نشون میده؟



samadblaj
جمعه 24 آذر 1391, 13:26 عصر
سلام دوستان ببخشید این برنامه ضرب ماتریس هستش اما موجه خروجیشنمیشم چجوری هستش...

ورودی هم به هر دو شکل زیر میپذیره...
5-5
یا
5
لطفا خروجیش رو برام شرح بدید ممنون میشم...

#include"stdio.h"
#include"conio.h"
int main()
{
int a[2][3] , b[3][4],c[2][4],i,k,j;
for (j=0;j<2;j++)
for (i=0;i<3;i++)
{
printf("input a[%i][%i]",j,i);
scanf("%d",&a[j][i]);
}
for (j=0;j<3;j++)
for (i=0;i<4;i++)
{
printf("input b[%i][%i]",j,i);
scanf("%d",&b[j][i]);
}
for(j=0;j<2;j++)
for(i=0;i<4;i++)
{
c[j][i]=0;
for(k=0;k<3;k++)
c[i][j]=c[j][i]+a[j][k]*b[k][j];
}
printf("%d,c[i][j]");
printf("\n");
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
printf("%d ",c[j][i]);
printf("\n");
}
getch();
return 0;
}

omidshaman
جمعه 24 آذر 1391, 14:07 عصر
این خط که کلا اشتباهه

printf("%d,c[i][j]");
بعد این کد رو شما خودت نوشتی؟
الگوریتمش مشکل داره!

omidshaman
جمعه 24 آذر 1391, 14:28 عصر
خط 23 میشه

c[j][i]=c[j][i]+a[j][k]*b[k][i];
واین که اصولا i رو میزارن برای سطر ها j رو میزارن برای سطون ها

لطفا خروجیش رو برام شرح بدید ممنون میشم...
الگوریتم ضرب 2 تا ماتریس :سطر اول در سطون اول سطر اول در سطون دوم و...
کاری که همین جا انجام میشه...

samadblaj
جمعه 24 آذر 1391, 14:29 عصر
سلام دوست خوبم ممنونم بابات راهنماییت این خط برای نمایش مقداری خروجی هستش...

لطفا اگه میتونید کمکم کنید میخوام به هر شکل یک ماتذیکس رو ضرب کنم

omidshaman
جمعه 24 آذر 1391, 14:46 عصر
این خط برای نمایش مقداری خروجی هستش...
نمایش مقداری خروجی چیه ؟
ضرب 2 تا ماتریس 1 ماتریسه مقدار نداره

میخوام به هر شکل یک ماتذیکس رو ضرب کنم
اگر منظورت اینه که یک ماتریس a*b رو در یک ماتریس b*c ضرب کنی زیاد فرقی نداره فقط قبلش باید a b c رو بگیری و توی حلقه ها به جای عددا a b c بزاری...

aidinMC
جمعه 24 آذر 1391, 15:26 عصر
دوست من فک کنم این کد به شما کمک کنه (البته قول بده خودت به کمک این یکی بنویسی :چشمک: )


#include<stdio.h>
#include<Windows.h>
#include<conio.h>
#include<iostream>

using namespace std;

void gotoxy(int,int);
void main()
{
int A[5][5],B[5][5],C[5][5],i,j,m,n,p,q,k;
system("cls");
cout << "\n-------------------------------------------------------------";
cout << "\n\n PROGRAM MULTIPLY TWO MATRICES --> aidinMC ";
cout << "\n\n------------------------------------------------------------";
cout << "\n\n\t ENTER A ORDER OF THE FIRST MATRIX M,N...: ";
cin >> m >> n;
cout << "\n\n\t ENTER A ORDER OF THE SECOND MATRIX P,Q...: ";
cin >> p >> q;
if(n == p)
{
cout << "\n\n\t ENTER THE ELEMENTS OF THE FIRST MATRIX..:\n\n";
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
gotoxy(25+j*4,14+i*2);
cin >> A[i][j];
}
cout << "\n";
}
cout << "\n\t ENTER THE ELEMENTS OF THE SECOND MATRIX..:\n\n";
for(i=1;i<=p;i++)
{
for(j=1;j<=q;j++)
{
gotoxy(25+j*4,21+m+i*2);
cin >> B[i][j];
}
cout << "\n";
}
for(i=1;i<=m;i++)
for(j=1;j<=q;j++)
{
C[i][j] = 0;
for(k=1;k<=n;k++)
C[i][j] = C[i][j] + (A[i][k] * B[k][j]);
}
cout << "\n\t THE PRODUCT OF TWO MATRICES IS...:\n\n\t\t\t ";
for(i=1;i<=m;i++)
{
for(j=1;j<=q;j++)
cout << C[i][j] << " ";
cout << "\n\n\t\t\t ";
}
}
else
{
cout << "\n\t THE ORDERS OF TWO MATRICES ARE NOT CORRECT";
cout << "\n\n\t HELP : 'N' SHOULD BE EQUAL TO 'P'";
}
cout << "\n\n------------------------------------------------------------";
_getch();
}

void gotoxy(int x,int y){
HANDLE hConsole;
COORD cursorLoc;
cout.flush();
cursorLoc.X = x;
cursorLoc.Y = y;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsole, cursorLoc);
}


اگه از ویژوال استدیو استفاده میکنی این کد جوابگو خواهد بود ، در غیر این صورت باید یه تغییر کوچیک بکنه...

samadblaj
جمعه 24 آذر 1391, 21:36 عصر
ممنونم دوست خوبم خیلی مثال واضح و روشنی بود کارم راه افتاد ولی یه سفارشی سازیش باید کنم دسته گلت درد نکنه... :تشویق: :تشویق:


دوست من فک کنم این کد به شما کمک کنه (البته قول بده خودت به کمک این یکی بنویسی )
من خودم سی شارپ میگردم سعی میکنم روش کار نکنم