ورود

View Full Version : سوال: ماتریس



maryam9903
جمعه 15 خرداد 1394, 13:38 عصر
1 برنامه نوشتم که 2 تا ماتریس دریافت کنه و حاصل جمع و ترانهاده و حاصل ضرب دو ماتریس رو چاپ میکنه.ولی دو تا اشکال داره.قسمت ترانهاده با اینکه به نظر خودم کدش درسته ولی اشتباه چاپ میکنه و اینکه من این برنامه رو برای ماتریس 3 در 3 نوشتم.اگه بخام خوده کاربر بگه ک ماتریس چن در چن باشه باید چیکار کنم؟
اینم کدی که نوشتم :



#include <iostream>
using namespace std;
int a[3][3],b[3][3],c[3][3];
void sum()
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
c[i][j]=a[i][j]+b[i][j];
}
}
void taranahade()
{
int i,j,temp;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
temp=a[i][j];
a[j][i]=temp;
}


}
}
void zarb()
{
int i,j,k;
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];
}
}
}
void chap()
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<c[i][j]<<" ";
cout<<"\n";
}
}
int main()
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cin>>a[i][j];
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cin>>b[i][j];
}
sum();
chap();
taranahade();
chap();
zarb();
chap();
}

chikar
جمعه 15 خرداد 1394, 22:26 عصر
1 ولی دو تا اشکال داره.قسمت ترانهاده با اینکه به نظر خودم کدش درسته ولی اشتباه چاپ میکنه و اینکه من این برنامه رو برای ماتریس 3 در 3 نوشتم.اگه بخام خوده کاربر بگه ک ماتریس چن در چن باشه باید چیکار کنم؟

از دو تا مشکل که فکر کنم، بیشتر هست !!:لبخند:
جواب سوال اولتون :


temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;



جواب سوال دومتون :
بهتر هست آرایه دو بعدیتون رو از طریق اشاره گر ها بسازید مثل روش زیر، چون اون وقت هم می تونید راحت به عنوان آرگومان تابع بفرستیدش به پارامتر ورودی یک تابع و هم اگر خوب اشاره گر ها را بشناسید می تونید خیلی بهتر از آرایه باهاش کار کنید(به نحوه استفاده در مثال زیر توجه کنید)،
و برای اینکه کاربر اعدا رو وارد کنه، می تونه خودش هم تعیین کنه که آرایه چند در چند باشه، بعد از اون می تونه تک تک عدد آرایه رو وارد کنه، من برای آرایه اول رو نوشتم، شما خودت هم آرایه دوم رو براش بنویس

int s1,s2;
std::cout << "please enter Row size for The first array : " << "\n";
std::cin >> s1 ;
std::cout << "please enter Colomn size for The first array : " << "\n";
std::cin >> s2 ;
int **array1;
array1 = new int*[s1];
for(int i=0;i<s1;i++)
array1[i] = new int[s2];

std::cout << "please enter Value for The first array which is " << s1*s2 << "\n";
int x;
for(int i=0;i<s1;i++)
for(int j=0;j<s2;j++)
{
std::cin >> x;
array1[i][j] = x;
}





موفق باشی!