📄 wzjarray.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 + -