65,211
社区成员
发帖
与我相关
我的任务
分享
SMatrix::SMatrix(RCV a[],int co,int ro,int n)
{
int i;
r=ro;c=co;num=n;
item=new RCV[num];
for(i=1;i <=num;i++)
item[i]=a[i];
};
#include <iostream.h>
#include <iostream>
struct RCV
{
int row,col;
int value;
};
class SMatrix
{
public:
SMatrix(){item=NULL;num=0;};
SMatrix(RCV a[],int co,int ro,int n);
~SMatrix(){delete item;cout <<"sd";} ;
void tran(SMatrix&);
int get(int i,int j);
void print();
private:
RCV *item;
int r,c,num;
};
SMatrix::SMatrix(RCV a[],int co,int ro,int n)
{
int i;
r=ro;c=co;num=n;
item=new RCV[num];
for(i=1;i <=num;i++)
item[i]=a[i];
};
void SMatrix::tran(SMatrix& x)
{
int i,j,k;
x.r=c;x.c=r;x.num=num;
x.item=new RCV[num];
for(i=1;i <=num;i++)
{ x.item[i].value=0;
x.item[i].col=0;
x.item[i].row=0;
cout <<x.item[1].value <<x.item[2].value <<x.item[3].value;}
}
int SMatrix::get(int i,int j)
{
for(int a=1;a <=num;a++)
{if(item[a].col==i&&item[a].row==j)
return item[a].value;
}
return 0;
}
void SMatrix::print()
{
int i,j;
cout <<"-----------------------------" <<endl;
for(i=1;i <=c;i++)
{for(j=1;j <=r;j++)
{cout <<get(i,j) <<" ";}
cout <<endl;}
cout <<"-----------------------------" <<endl;
}
void main()
{
RCV j[100];
int h,l,n;
cout<<"请输入矩阵的大小 行,列" <<endl;
cin>>h>>l;
cout <<"你要输入多少个元素?" <<endl;
cin>>n;
for(int i=1;i <=n;i++)
{cout <<"请输入第" <<i <<"元素所在的行,所在的列,元素的值" <<endl;
cin>>j[i].col>>j[i].row>>j[i].value;}
SMatrix M(j,h,l,n);
//M.print();
SMatrix A;
M.tran(A);
A.print();
}
void cheng(SMatrix&x,SMatrix a,SMatrix b)
{
int i,j,q,y,z;
x.c=b.r ;x.r=a.c ;x.num=a.num;
x.item=new RCV[a.num]; //这里有问题,因为x.item本来可能已经new空间了,所以在再次new之前应该将原来的释放~
//修改为:if(x.item != NULL){delete []x.item;}
for(i=1;i <=a.num;i++)
{ x.item[i].col=0;
x.item[i].row=0;
x.item[i].value=0;
}
}