矩阵类
class MatrixBase
{
	int rows, cols;
public:
	MatrixBase(int the_rows, int the_cols) :rows(the_rows), cols(the_cols){}
	int GetRows()const { return rows; }
	int GetCols()const  { return cols; }
	virtual double getElement(int r, int c)const = 0;
	void show()
	{
		for (int i = 0; i < rows;i++)
		{
			cout << endl;
			for (int j = 0; j < cols; j++)
				cout << getElement(i, j)<< "  ";
		}
	}
};
class Matrix :public MatrixBase
{
	double *val;
public:
	Matrix(int rows, int cols, double m[] = NULL) :MatrixBase(rows, cols)
	{
		val = new double[rows*cols];
		for (int i = 0; i < rows*cols; i++)
			val[i] = (m == NULL ? 0.0 : m[i]);
	}
	~Matrix(){ delete[] val; }
	double getElement(int r, int c)const { return val[r*GetCols() + c]; }
};
class UnitMatrix :public MatrixBase
{
public:
	UnitMatrix(int rows) :MatrixBase(rows, rows){}
	double getElement(int r, int c)const
	{
		if (r==c) return 1.0;
		return 0.0;
	}
};
int main()
{
 	MatrixBase *m;
	double d[][5] = { { 1, 2, 3, 4, 5 }, { 2, 3, 4, 5, 6 }, { 3, 4, 5, 6, 7 } };
	m = new Matrix(3, 5, (double *)d);
	m->show();
	delete m;
	cout << endl;
	m = new UnitMatrix(5);
	m->show();
	delete m;
	return 0;
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号