daneshjo IT
یک شنبه 20 خرداد 1386, 14:14 عصر
سلام.
من در رابطه با نوشتن class ماتریس n*n اشکالی داشتم.
قبل از اینکه سوالاتم را بپرسم در رابطه با این code بگم که: علت اینکه از دو constructor استفاده شده این است که.اگر کاربر هیچ مقداری را برای n وارد نکرد به صورت پیش فرض یک ماتریس 100*100 به صورت پویا ساخته شود.(البته در فراخوانی این دو constructor با توجه به این توضیح چگونه باید عمل کنم؟)
اشکال های من :
1)وقتی که در constructor این کلاس مقدار n را از کاربر گرفتم و ماتریس را به صورت پویا ساختم چگونه مقدار n را به method های این class ارجاع بدهم؟؟؟
در این قطعه code که من نوشتم در جاهایی که از n استفاده کردم error میگیرد؟
2)در برنامه main هنگامی که methode هایی را که مقداری را به عنوان ورودی میگیرند(مثلا methode :motegharen()) را اگر بخواهم فراخوانی کنم .چگونه این کار را باید انجام بدهم؟
3)در مورد ارجاع دادن ماتریس a به methodهای این کلاس,نمیدونستم که چه چگونه ارجاع بدم کاری که انجام دادم درسته؟؟؟؟
منتظر راهنماییتون می باشم.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class sqmatrix
{
friend ostream &operator<<(ostream & output,const sqmatrix & a);
friend istream &operator>>(istream & input,const sqmatrix & a);
private:
int n;
int**a;
public:
sqmatrix( int n);
sqmatrix();
int motegharen(int a,n);
//************************************************** ******
sqmatrix :: sqmatrix(int n)
{
cout<<"enter n :";
cin>>n;
int **a=new int *[n];
for(int i=1;i<=n;i++)
a[i-1]=new int[i];
}
//************************************************** ******
sqmatrix :: sqmatrix()
{
a=new int*[100];
for (int i=0;i<100;i++)
a[i]=new int[100];
}
//************************************************** *
istream &operator>>(istream &input,const sqmatrix & a)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
input>>a[i][j];
return (input);
}
//************************************************** **
ostream &operator<<(ostream &output,const sqmatrix & a)
{
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
output<<a[i][j];
cout<<endl;
return(output);
}
//************************************************** ***
int sqmatrix:: motegharen(int a,n)
{
int i,j;
for( i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]!=a[j][i]){
cout<<" Motegharen : False"<<endl;
return 0;
}
cout<<" Motegharen : True" <<endl;
return 0;
}
//************************************************** ******
int main()
{
sqmatrix b;
b.motegharen(int);
getch();
return 0;
{
من در رابطه با نوشتن class ماتریس n*n اشکالی داشتم.
قبل از اینکه سوالاتم را بپرسم در رابطه با این code بگم که: علت اینکه از دو constructor استفاده شده این است که.اگر کاربر هیچ مقداری را برای n وارد نکرد به صورت پیش فرض یک ماتریس 100*100 به صورت پویا ساخته شود.(البته در فراخوانی این دو constructor با توجه به این توضیح چگونه باید عمل کنم؟)
اشکال های من :
1)وقتی که در constructor این کلاس مقدار n را از کاربر گرفتم و ماتریس را به صورت پویا ساختم چگونه مقدار n را به method های این class ارجاع بدهم؟؟؟
در این قطعه code که من نوشتم در جاهایی که از n استفاده کردم error میگیرد؟
2)در برنامه main هنگامی که methode هایی را که مقداری را به عنوان ورودی میگیرند(مثلا methode :motegharen()) را اگر بخواهم فراخوانی کنم .چگونه این کار را باید انجام بدهم؟
3)در مورد ارجاع دادن ماتریس a به methodهای این کلاس,نمیدونستم که چه چگونه ارجاع بدم کاری که انجام دادم درسته؟؟؟؟
منتظر راهنماییتون می باشم.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class sqmatrix
{
friend ostream &operator<<(ostream & output,const sqmatrix & a);
friend istream &operator>>(istream & input,const sqmatrix & a);
private:
int n;
int**a;
public:
sqmatrix( int n);
sqmatrix();
int motegharen(int a,n);
//************************************************** ******
sqmatrix :: sqmatrix(int n)
{
cout<<"enter n :";
cin>>n;
int **a=new int *[n];
for(int i=1;i<=n;i++)
a[i-1]=new int[i];
}
//************************************************** ******
sqmatrix :: sqmatrix()
{
a=new int*[100];
for (int i=0;i<100;i++)
a[i]=new int[100];
}
//************************************************** *
istream &operator>>(istream &input,const sqmatrix & a)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
input>>a[i][j];
return (input);
}
//************************************************** **
ostream &operator<<(ostream &output,const sqmatrix & a)
{
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
output<<a[i][j];
cout<<endl;
return(output);
}
//************************************************** ***
int sqmatrix:: motegharen(int a,n)
{
int i,j;
for( i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]!=a[j][i]){
cout<<" Motegharen : False"<<endl;
return 0;
}
cout<<" Motegharen : True" <<endl;
return 0;
}
//************************************************** ******
int main()
{
sqmatrix b;
b.motegharen(int);
getch();
return 0;
{