PDA

View Full Version : سوال: چگونگی استفاده از operator ، هنگامی که می خواهیم یک آرایه را برگردانیم



jannatmakan
شنبه 09 اردیبهشت 1391, 06:32 صبح
با عرض سلام.
قراره ماتریس ها رو به صورت شی تعریف کنم و عملگرها و برای مثلاً جمع دو ماتریس سربارگذاری کنم.
می دونیم که برای جمع دو ماتریس باید عناصر ماتریس، نظیر به نظیر باهم جمع بشن.
این کلاسیه که نوشتم.

class matrix
{
public:
matrix operator+(matrix op2);
matrix operator-(matrix op2);
matrix();
~matrix();
void create(int,int);
void getvalues();
void showvalues();
private:
int created;
int *value;
int rowss;
int columns;
};



اینم متد create

void matrix::create(int rows,int cols)
{
value=new int [rows,cols];
created=1;//for ~matrix::matrix()
columns=cols;
rowss=rows;
}


توضیحات:
تابع create کارش ایجاد یک ماتریس n*m هست. و تابع getvalues هم عناصر ماتریس رو می گیره.
خوب حالا که میزان سطر و ستون ماتریسی که می خوام جمع بزنم مشخص نیست و به عبارتی پویاست، مجبورم از حلقه ی for متداخل در تابع operator استفاده کنم. اما کارش رو درست انجام نمی ده. از شما دوستان کسی هست که بتونه کمک کنه؟ ممنون . اینم از تابع +operator
بقیه خطوط هم برای کنترله. لطفاً فقط بگید چرا تابع operator مقادیر شیِ result رو درست مقداردهی نمی کنه؟



matrix matrix::operator+(matrix op2)
{
matrix result;

result.create(op2.rowss,op2.columns);

if(op2.rowss==rowss && op2.columns==columns)
{
for(int i=0;i<rowss;i++)
{
for(int j=0;j<columns;j++)
{
result.value[i,j]=op2.value[i,j]+value[i,j];
}
}
}
else
{
cout<<"Error: Both of matrixs's must be TANTAMOUNT.\n";
}
return result;
}

ASGGSA
شنبه 09 اردیبهشت 1391, 07:10 صبح
سلام.
تابع Create بهتر یک خروجی شیء داشته باشه یعنی ما سطر و ستون را به آن می دهیم و آن یک شیء ماتریس به ما میدهد. حالا می توانید دو شیء جداگانه ایجاد کنید.
بهتر تابع Operator از ورودی دو تا شیء بگیره که قبلاً ایجاد شده اند بعد باهم جمع کنه و در خروجی به ما یک شیء بدهد.
به خاطر سوال شما متشکرم!
موفق باشید.

jannatmakan
یک شنبه 10 اردیبهشت 1391, 23:59 عصر
بنده هم از جواب شما متشکرم . ولی من هم همین کارو کردم . یعنی مقدار خروجی ماتریس ها به صورت شی در داخل value قرار می گیرد. منتها سوال من توی تابع operator هست. که توش نمی تونم با for کار کنم.

Ananas
دوشنبه 11 اردیبهشت 1391, 00:27 صبح
سلام.
value رو با دو تا ستاره تعریف نکردی با یک ستاره تعریف کردی. شاید بخاطر همین حلقه ای که نوشتی درست کار نمیکنه.

ASGGSA
دوشنبه 11 اردیبهشت 1391, 19:16 عصر
سلام.
در تاپیک زیر توضیحات آقای موسوی را درباره آرایه دوبعدی (بصورت پویا) بخوانید.
http://barnamenevis.org/showthread.php?338701-تعریف-آرایه-دو-بعدی-به-صورت-پویا