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

📄 wzjarray.h

📁 在工程交通行业如测绘部门经常用到角度单位的转换
💻 H
字号:
// WzjArray.h: interface for the CWzjArray class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_WZJARRAY_H__EA652878_3157_4CF5_B8F8_C72F04E001C4__INCLUDED_)
#define AFX_WZJARRAY_H__EA652878_3157_4CF5_B8F8_C72F04E001C4__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/************************************************************************************
*																					*
*		类名:	CWzjArray   头文件 WzjArray.h										*
*		描述:	矩阵处理和成矩阵排列数据读取										*
*		信息:	汪自军   吉林大学    2005.10										*
*		联系:	wzj23020723@163.com  TM: 39600719									*
*		blog:	http://wzj23020723.3sblog.com	                            		*
*																					*
************************************************************************************/

class  CWzjArray  
{
//属性
private:
	CString m_WzjArrayData; //字符串保存数据
	CString m_szInterStr; //字符串数组一行中数据间的间隔符
	BOOL m_bAutoDelete; //创建的字符串是否自动在析构函数中释放
public:
	int m_nRow,m_nColumn; //数据的行、列
	double** m_dUnitData;//数值型数据
	CString** m_szUnitData;//字符串型数据

//构造
public:
	CWzjArray(); //无参构造
	CWzjArray(CString str, CString szInterStr = ",", BOOL bAutoDel = FALSE); //字符串构造,同时得到每单元数据保存到二维指针数组中
	CWzjArray(double **pdArrayData,int nRow,int nCol, BOOL bAutoDel = FALSE); //数据仅保存在指针数组中
	virtual ~CWzjArray();

//操作	
public:
	CString GetTotalArrayStr() const;  //获得整体字符串型数据
	void FormatToTotalArray(int nPre = 6, int nInt = 0, CString szInterStr = ",");	
	void FormatToUnitData();
	void Atof();
	
	//用字符串设置数据
	void SetArrayData(CString strArrayData, CString szInterStr = ",", BOOL bAutoDel = FALSE); 
	//用数组设置数据	
	void SetArrayData(double **pdArrayData,int nRow,int nCol, BOOL bAutoDel = FALSE);
	/*****************************************************************************************
	//拷贝矩阵,这跟"="是不同的,"="时赋的值指针是同一个,修改其中一个另外一个也跟着修改
	//而拷贝矩阵指针不是简单地赋值,而是重新创建了新的指针,把原来指针指向的值赋给新指针指向的值
	******************************************************************************************/
	BOOL CopyFrom(CWzjArray arrSource, BOOL bIsAutoDel = FALSE); //拷贝矩阵
	
	//////////以下是对矩阵的一般运算////////////////////////////////////////////
	CWzjArray GetTransposeArray() ; //获得转置距阵
	BOOL GetContralArray(CWzjArray& arrContral) ; //获得逆距阵	
	CWzjArray operator + (CWzjArray arr); //相同行列矩阵相加
	CWzjArray operator - (CWzjArray arr); //相同行列矩阵相减
	CWzjArray operator * (CWzjArray arr) ; //距阵乘法
	CWzjArray operator + (double dAdd); //加上一个数
	CWzjArray operator - (double dSub); //减去一个数据	
	CWzjArray operator * (double dTimes); //矩阵每个元素乘以一个数
	CWzjArray operator / (double dDiv); //矩阵每个元素除以一个数
	CWzjArray Sub(double dBySub); //一个数据减去矩阵每个元素
	CWzjArray Divide(double dByDiv); //一个数去除以矩阵每个元素
	CWzjArray Pow(double dPow); //矩阵乘方和开放运算
	
	void DeleteColumn(int nColumn); //删除一列数据
    void DeleteRow(int nRow); //删除一行数据
	void Reset(BOOL bIsValOrStr = TRUE);

	//删除矩阵数组,之所以不放在析构函数中是因为有可能把此数组赋给二维指针,
	//就不能在其他函数用了
	void DeleteWzjArray(); //手动删除二维指针变量	
//实现
private: //行和列保存到成员变量中,每次调用这个函数获得行和列太浪费了
	int GetRow() const;  //字符串构造时获得行数
	int GetColumn() const; //字符串构造时获得列数

	BOOL New2Array(double** &pdArray, int nRow, int nColumun); //创建二维指针
	BOOL Delete2Array(double** &pdArray, int nRow); //释放二维指针
	BOOL New2Array(CString** &pszArray, int nRow, int nColumun); //创建二维指针
	BOOL Delete2Array(CString ** &pszArray, int nRow); //释放二维指针
	CString GetStr(double dData, int nPri = 6, int nInt = 0); //数值转化为字符串
	void GetUnitStr(); //读取整体字符串,保存在字符串数组中
};

#endif // !defined(AFX_WZJARRAY_H__EA652878_3157_4CF5_B8F8_C72F04E001C4__INCLUDED_)

⌨️ 快捷键说明

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