⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix1.h

📁 矩阵运算程序 功能分析: 本程序能完成矩阵的输入、输出。具有相同行数和列数的矩阵间的加法、减法。符合矩阵乘法规则要求的矩阵间的乘法。方阵间的除法
💻 H
字号:
// Matrix1.h: interface for the CMatrix class.
//
//////////////////////////////////////////////////////////////////////
#include "item.h"

#if !defined(AFX_MATRIX1_H__A05DE688_F685_11D6_8D3F_00606706B0B9__INCLUDED_)
#define AFX_MATRIX1_H__A05DE688_F685_11D6_8D3F_00606706B0B9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
template<class DataType>
class CMatrix  
{
// Method:
public:
	CMatrix(int num,int m,int n)//源矩阵是m x n型
	{
		pMatrix=NULL;
		m_Num=num;
		m_nLine=m;
		m_nRow=n;
		pMatrix=NULL;
		pMatrix=new CItem<DataType>[num];
	}

	virtual ~CMatrix()
	{
		if(pMatrix!=NULL)
			delete [m_Num]pMatrix;
	}

	void Transposit(CMatrix<DataType> *pM/*源矩阵*/)
		//矩阵转置
	{
		if(pM==NULL)
			return;

		m_nRow=pM->GetLineNum();//转置矩阵的行数
		m_nLine=pM->GetRowNum();//转置矩阵的列数
		m_Num=pM->GetNumber();//转置矩阵的非零数

		//创建列计数器
		int *r=new int[m_nRow];//转置矩阵各行的计数器

		//建立列入口指针
		CItem<DataType>* *ep=new CItem<DataType>*[m_nRow];

		//初始化
		for(int i=0;i<m_nRow;i++)
		{
			r[i]=0;
			ep[i]=NULL;
		}

		//计数器计数
		for(i=0;i<m_Num;i++)
			r[pM->pMatrix[i].m_LineID-1]++;

		//计算列入口地址
		int n=0;
		for(i=0;i<m_nRow;i++)
		{
			if(i==0)
				ep[0]=&pMatrix[0];
			else
			{
				ep[i]=&pMatrix[n];
			}
			n+=r[i];
		}
		
		//转置
		for(i=0;i<m_Num;i++)
		{
			int lid=pM->pMatrix[i].m_LineID-1;

			ep[lid]->m_RowID=pM->pMatrix[i].m_LineID;
			ep[lid]->m_LineID=pM->pMatrix[i].m_RowID;
			ep[lid]->m_Data=pM->pMatrix[i].m_Data;

			ep[lid]++;
		}
	}

	inline int GetNumber() const
	{
		return m_Num;
	}

	inline int GetLineNum() const
	{
		return m_nLine;
	}

	inline int GetRowNum() const
	{
		return m_nRow;
	}

// Attribute:
public:
	CItem<DataType> *pMatrix;// The ptr to the matrix entrance
protected:
	int m_nRow;//行数
	int m_nLine;//列数
	int m_Num;//非零数据个数
};

#endif // !defined(AFX_MATRIX1_H__A05DE688_F685_11D6_8D3F_00606706B0B9__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -