程序代码:
#include<iostream>
using namespace std;
class juzhen
{
public:
juzhen (int l,int r){line=l;row=r; }//构造函数
juzhen(juzhen*ju){line=ju->line;row=ju->row;p=ju->p;}//****************************88拷贝构造函数
void input(juzhen* Pju);//赋值函数
void output(juzhen* Pju);//输出函数
void add(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3) ;//计算两矩阵之和
void minu(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3);//计算两矩阵之差
~juzhen(){delete[] p;}//析构函数
private:
int line,row;//矩阵大小属性
int (*p)[10];//指向矩阵的指针
};
void juzhen::input(juzhen* Pju)
{ int i,j;
int (*p1)[10]=new int[line][10];
Pju->p=p1;//给指针一个地址
cout<<" 请依次输入矩阵的值"<<endl;
for(i=0;i<line;i++)
for(j=0;j<row;j++)
{ //cin>>*(*(Pju->p+i)+j); //逐个输入矩阵中的每一个元素
*(*(Pju->p+i)+j)=1;//依次赋值
}
Pju->output(Pju);//输出各矩阵
}
void juzhen::output(juzhen* Pju)
{ int i,j;
for(i=0;i<line;i++)
{ for(j=0;j<row;j++)
cout<<*(*(Pju->p+i)+j)<<" ";//逐个输出矩阵中的每一个元素
cout<<endl; //每输完一行就换行
}
}
void juzhen::add(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3) //计算两矩阵之和
{ int i,j;
for(i=0;i<line;i++)
for(j=0;j<row;j++)
*(*(Pju3->p+i)+j)=*(*(Pju1->p+i)+j)+*(*(Pju2->p+i)+j);//计算每一个新矩阵中的元素值
Pju3->output(Pju3); //输出新矩阵
}
void juzhen::minu(juzhen* Pju1,juzhen* Pju2,juzhen* Pju3)//计算两矩阵之差
{ int i,j;
for(i=0;i<line;i++)
for(j=0;j<row;j++)
*(*(Pju3->p+i)+j)=*(*(Pju1->p+i)+j)-*(*(Pju2->p+i)+j);//计算每一个新矩阵中的元素值
Pju3->output(Pju3); //输出新矩阵
}
int main()
{ int l,r;
cout<<"请输入矩阵的行列"<<endl;
cin>>l>>r;
juzhen* Ptr1=new juzhen(l,r);
juzhen* Ptr2=new juzhen(l,r);
juzhen* Ptr3=new juzhen(l,r);//动态给矩阵申请空间
Ptr1->input(Ptr1);
Ptr2->input(Ptr2);
Ptr3->input(Ptr3); //各个赋值
cout<<"A3=A1+A2 :"<<endl;
Ptr1->add (Ptr1,Ptr2,Ptr3);//计算两矩阵之和
cout<<"A3=A1-A2 :"<<endl;
Ptr1->minu (Ptr1,Ptr2,Ptr3);//计算两矩阵之差
system("pause");
return 0;
这是我刚刚调出来的,不知道是否符合题意?各位看看,说说两句吧。