中易网

请问如何用c++编写个矩阵

答案:2  悬赏:50  
解决时间 2021-03-22 02:53
要能进行运算的,请明确的写出个个步骤
最佳答案
#include "iostream.h"
class CMatrix
{
int m_Rows;
int m_Cols;
float *m_P;
public:
CMatrix(int i=0,int j=0);
~CMatrix();
void Init();
void Show();
CMatrix operator+(CMatrix &rc);
CMatrix operator*(CMatrix &rc);
CMatrix operator-(CMatrix &rc);
CMatrix & operator=(CMatrix &rc);
CMatrix (CMatrix &rc);
};
CMatrix::CMatrix(int i,int j)
{
int m,n;
m_P=0;
if(i<0||j<0)
return;
m_Rows=i;
m_Cols=j;
m_P=new float[m_Rows*m_Cols];
for(m=0;m<i;m++)
for(n=0;n<j;n++)
m_P[m*m_Cols+n]=0;
}
void CMatrix::Init()
{
int i,j;
for(i=0;i<m_Rows;i++)
for(j=0;j<m_Cols;j++)
{
cout<<"请输入矩阵元素["<<i<<"]["<<j<<"]:";
cin>>m_P[i*m_Cols+j];
}
}
void CMatrix::Show()
{
int i,j;
for(i=0;i<m_Rows;i++)
{
for(j=0;j<m_Cols;j++)
cout<<" "<<m_P[i*m_Cols+j];
cout<<endl;
}
}
CMatrix CMatrix::operator*(CMatrix &rc)
{
int i,j,k;
if(m_Cols!=rc.m_Rows)
return CMatrix();
CMatrix r(m_Rows,rc.m_Cols);
for(i=0;i<m_Rows;i++)
for(j=0;j<rc.m_Cols;j++)
for(k=0;k<m_Cols;k++)
r.m_P[i*rc.m_Cols+j]+=m_P[i*m_Cols+k]*rc.m_P[k*rc.m_Cols+j];
return r;
}
CMatrix CMatrix::operator+(CMatrix &rc)
{
if(m_Rows!=rc.m_Rows||m_Cols!=rc.m_Cols)
return CMatrix();
CMatrix r(m_Rows,m_Cols);
for(int i=0;i<m_Rows;i++)
for(int j=0;j<rc.m_Cols;j++)
r.m_P[i*m_Cols+j]=m_P[i*m_Cols+j]+rc.m_P[i*m_Cols+j];
return r;
}
CMatrix CMatrix::operator-(CMatrix &rc)
{
if(m_Rows!=rc.m_Rows||m_Cols!=rc.m_Cols)
return CMatrix();
CMatrix r(m_Rows,m_Cols);
for(int i=0;i<m_Rows;i++)
for(int j=0;j<rc.m_Cols;j++)
r.m_P[i*m_Cols+j]=m_P[i*m_Cols+j]-rc.m_P[i*m_Cols+j];
return r;
}

CMatrix & CMatrix::operator=(CMatrix &rc)
{
if(m_P!=0)
delete m_P;
m_Rows=rc.m_Rows;
m_Cols=rc.m_Cols;
m_P=new float[m_Rows*m_Cols];
for(int i=0;i<m_Rows*m_Cols;i++)
m_P[i]=rc.m_P[i];
return *this;
}
CMatrix::CMatrix (CMatrix &rc)
{
int i,j;
m_Rows=rc.m_Rows;
m_Cols=rc.m_Cols;
m_P=new float[m_Rows*m_Cols];
for(i=0;i<m_Rows;i++)
for(j=0;j<m_Cols;j++)
m_P[i*m_Cols+j]=rc.m_P[i*m_Cols+j];
}
CMatrix::~CMatrix ()
{
if(m_P!=0)
delete []m_P;
}
int main(int argc, char* argv[])
{
cout<<"第一个矩阵"<<endl;
CMatrix c(2,2);
c.Init();
cout<<"第二个矩阵"<<endl;
CMatrix b(2,3);
b.Init();
cout<<"第三个矩阵"<<endl;
CMatrix d(2,3);
d.Init();

cout<<"第一个矩阵是:"<<endl;
c.Show();
cout<<"第二个矩阵是:"<<endl;
b.Show();
cout<<"第三个矩阵是:"<<endl;
d.Show();
CMatrix r;
r=c*b;
cout<<"第一和第二个矩阵的相乘后的矩阵是:"<<endl;
r.Show();
CMatrix k;
k=b+d;
cout<<"第二和第三个矩阵的相加后的矩阵是:"<<endl;
k.Show();
CMatrix p;
p=b-d;
cout<<"第二和第三个矩阵的相减后的矩阵是:"<<endl;
p.Show();
return 0;
}
全部回答
#include <iostream> using namespace std; void zhuanzhi(int *,int r,int c); int main() { int row,col; int *mat=0; cout<<"请输入行列:\n"; cin>>row>>col; mat = new int[row*col]; if (mat != 0) { for (int i=0;i<row;i++) { for (int j=0;j<col;j++) { cin>>*(mat+i*col+j); } } zhuanzhi(mat ,row,col); system("pause"); delete[] mat; } else { cout<<"内存不足\n"; } } void zhuanzhi(int *m, int r,int c) { for (int i=0;i<c;i++) { for (int j=0;j<r;j++) { cout<<*(m+i+j*c)<<" "; } cout<<endl; }  }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
圣派集成墙板有什么优点?
高是176cm,标准体重应该是多少
男友那方面不行,劝我出轨,他说的是真心话吗
店面开业择吉日
仿写句子,春天来了,小鸟欢快的唱着歌小鹿跳
宾馆布置婚房,会收清洁费吗?
如何才能快速的学会火锅店的刨肉,都有什么技
《妇复春》有副作用吗?
超市货架排面陈列图设计制作软件。怎么办?
土豆下载的视频必须转换格式吗,下载的视频我
海宁最好吃的小龙虾在哪?
邮政技能鉴定考试《邮政营业员》理论考核模拟
近几年我国对外开放的具体示例
jsp类的静态属性如何显示到网页中
SuJu探案集 suJu猎灵社 SM刑侦纪事三本或类似
推荐资讯
吴姓女孩取名羊年出生,中间带亚字
银杏达莫和杏丁哪个对心脑血管比较好?差距在
网上买的无纺布硬纸板收纳盒味道很大,泡水后
阿里妈妈是如何操作的 怎么用淘宝店做代理
网速很慢只能上Q是怎么回事啊,哪位高人指点
电信19元套餐卡不用了要消号不
互惠生签证是不是属于学生签证?
二道江区通化市二道江区商务局地址是什么,有
10元店连锁10元加盟店10元饰品店全场10元店是
天天酷跑里的齐天大圣怎么样的搭配经典模式分
童装牛仔裤厂家
淘宝买家要几百件衣服是骗子吗?还给我打电话
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?