永发信息网

急需:c++对象数组与对象指针

答案:1  悬赏:20  手机版
解决时间 2021-04-14 21:32

1. 设计一个矩阵类Matrix(矩阵由二维数组实现),有分配空间和对矩阵赋值的功能。

2. 练习将这个矩阵类的对象作为参数传送到函数Mul(),用普通,指针和引用三种方法实现,并要注意这三种方式的区别。

(1) 直接传送:Mul(Matrix a,Matrix b)。实际上只是传送值,在函数中针对对象的任何修改均不影响该对象本身。

(2) 指针传送:Mul(Matrix *pa,Matrix *pb)。要注意指针的级数。

(3) 引用传送:Mul(Matrix &a,Matrix &b)这种调用将影响参数的实际值。

3. 将Mul函数实现:完成对传送的两个Martix对象的相乘运算。下面给出矩阵相乘的算法:

矩阵a[I][j]与矩阵b[x][y]相乘,条件是j==x。

乘积是一个新的矩阵c[I][j],其中c[I][j]的值是

∑(a[I][k]*b[k][y])

其中k=0,1,2,……,j。

4. 在Matrix类中定义一个静态数据成员,记录当前所有Matrix对象的数量。

5. 定义一个友元函数实现转制功能。转制是指将数组中a[i][j]与a[j][i]的值对调。

最佳答案

#include<iostream.h>
#include<stdlib.h>
class matrix{
public:
static int count;
int **array,**tarray,**c;
int m,n;
public:
matrix();
~matrix();
friend void t(const matrix &a,int *tarray);
void display();


};


int matrix::count=0;
matrix::matrix()
{
int i,j;
cout<<"输入初始化的矩阵对象 阶数m行,n列: ";
cin>> m>>n;
cout<<"输入矩阵数据:\n";


tarray=new (int* [n] ) ;
c=new (int* [m] );
array=new (int* [m] );
for(i=0;i<n;i++)
{
tarray[i]=new int[m];
c[i]=new int[n];
array[i]=new int[n];
}
if( array!=NULL)
{
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cin>> array[i][j];
cout<<"\n";
}
count++;
}
else
{ cerr<<"申请内存失败!";
exit(1);
}



}
matrix::~matrix()
{
for(int i=0;i<count;i++)
{ delete []array ;
delete []tarray;
delete []c;
}
}
void t(const matrix &a,int **tarray,int &n,int &m)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
tarray[i][j]=a.array[j][i];
}
void matrix::display()
{
int i,j;
cout<<"显示矩阵乘积:\n";
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cout<<c[i][j];
cout<<"\n";
}
cout<<"显示转置矩阵:\n";
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cout<<tarray[i][j];
cout<<"\n";
}
}
//矩阵乘积
int** mul(matrix& a,matrix& b )
{
if(a.m!=b.n)
{
cerr<<"错误矩阵,无法相乘!\n";
exit(1);
}
else
{
int i,j,k,temp=0;
for(i=0;i<a.m;i++)
{
for(j=0;j<a.n;j++)
{
for(k=0;k<a.n;k++)
temp+=a.array[i][k]*b.array[k][j];
a.c[i][j]=temp;
}
}


return a.c;
}
}


int main()
{
matrix a,b;
t(a,a.tarray,a.n,a.m);
int **carray=mul(a,b);
a.display();


return 0;
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
23后面连续的三个偶数是( ) 21后面
要女生网名!伤感,颓废,个性的,
空之境界的小说只有国内顶尖网络小说九成的水
NBA篮球赛总决赛共有几场
描绘一下古代富贵人家的服饰
买女鞋子什么牌子好,时尚女鞋品牌有哪些呢
我媳妇女儿因上坟烧纸一事与执法人员发生肢体
狼康沟我想知道这个在什么地方
单选题下列物质的转变,不能一步实现的是A.KC
为什么邮政那么忙呢?
全日制本科毕业能不能算英语三级过关
谁知道吉利中国龙车离吉林最近的经销点在哪?
魔兽世界7.0末日审判任务怎么做
火锅店用液化气和电磁炉哪个更节约成本,求懂
用干白菜做馅时,干白菜要煮熟吗?
推荐资讯
一辆汽车保持功率不变驶上一斜坡,牵引力逐渐
扬州金陵大饭店-健身中心这个地址在什么地方
怎么样对胎儿好
怎么能把QQ删除
汽油发动机机盖渗油是怎么回事
左旋肉碱药店卖多少钱,左旋肉碱在哪种药店有
深塘屋地址在什么地方,想过去办事
高平韩式发艺怎么去啊,有知道地址的么
我的内存卡用读卡器插到电脑上打不开,当打开
描写塘沽外滩公园的作文
淘宝网在那里可以拿到货源
简短情人节祝福语,跟情人节有关的句子
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?