exam2.cpp
来自「C++语言程序设计题典」· C++ 代码 · 共 116 行
CPP
116 行
#include <iostream.h>
#include <iomanip.h>
class matrix
{
short rows,cols;
int *elems;
public:
matrix() {}
matrix(short r,short c)
{
rows=r;cols=c;
elems=new int[rows*cols];
}
int operator () (short row,short col);
void setelem(short row,short col,int val);
friend matrix operator +(matrix p,matrix q);
friend matrix operator -(matrix p,matrix q);
friend matrix operator *(matrix p,matrix q);
void disp();
};
int matrix::operator () (short row,short col)
{
if (row>=1 && row<=rows && col>=1 && col<=cols)
return elems[(row-1)*cols+(col-1)];
else
return 0;
}
void matrix::setelem(short row,short col,int val)
{
if (row>=1 && row<=rows && col>=1 && col<=cols)
elems[(row-1)*cols+(col-1)]=val;
}
matrix operator +(matrix p,matrix q)
{
matrix m(p.rows,p.cols);
if (p.rows!=q.rows || p.cols!=q.cols)
return m;
for (int r=1;r<=p.rows;r++)
for (int c=1;c<=p.cols;++c)
m.setelem(r,c,p(r,c)+q(r,c));
return m;
}
matrix operator -(matrix p,matrix q)
{
matrix m(p.rows,p.cols);
if (p.rows!=q.rows || p.cols!=q.cols)
return m;
for (int r=1;r<=p.rows;r++)
for (int c=1;c<=p.cols;c++)
m.setelem(r,c,p(r,c)-q(r,c));
return m;
}
matrix operator *(matrix p,matrix q)
{
matrix m(p.rows,q.cols);
if (p.cols!=q.rows)
return m;
for (int r=1;r<=p.rows;r++)
for (int c=1;c<=q.cols;c++)
{
int s=0;
for (int i=1;i<=p.cols;i++)
s+=p(r,i)*q(i,c);
m.setelem(r,c,s);
}
return m;
}
void matrix::disp()
{
for (int r=1;r<=rows;++r)
{
cout << " ";
for (int c=1;c<=cols;c++)
cout << setw(2) << (*this)(r,c) << " ";
cout << endl;
}
}
void main()
{
matrix a(2,3),b(2,3),c(3,2),d(2,3),e(2,2);
a.setelem(1,1,1);
a.setelem(1,2,2);
a.setelem(1,3,3);
a.setelem(2,1,4);
a.setelem(2,2,5);
a.setelem(2,3,6);
b.setelem(1,1,1);
b.setelem(1,2,2);
b.setelem(1,3,3);
b.setelem(2,1,4);
b.setelem(2,2,5);
b.setelem(2,3,6);
c.setelem(1,1,1);
c.setelem(1,2,4);
c.setelem(2,1,2);
c.setelem(2,2,5);
c.setelem(3,1,3);
c.setelem(3,2,6);
cout << "输出结果" << endl;
cout << " A矩阵:" << endl;
a.disp();
cout << " B矩阵:" << endl;
b.disp();
cout << " C矩阵:" << endl;
c.disp();
d=a+b;
cout << " A+B矩阵:" << endl;
d.disp();
d=a-b;
cout << " A-B矩阵:" << endl;
d.disp();
e=a*c;
cout << " A*C矩阵:" << endl;
e.disp();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?