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 + -
显示快捷键?