在种里定义动态数组
在类里定义动态数组
我需要在类里建立一个n*2的动态数组(这样才能实现在所有的类的成员函数进行引用数据),然后利用MFC的控件按钮为其添加数据,如何实现?
这是我的一个作业题如下:
编写一个求任意多边形面积的程序。提示:通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,然后再进行计算。要求计算部分写成函数的形式,使计算程序与界面无关。
------解决方案--------------------
用std::vector
------解决方案--------------------
------解决方案--------------------
"通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,"
我需要在类里建立一个n*2的动态数组(这样才能实现在所有的类的成员函数进行引用数据),然后利用MFC的控件按钮为其添加数据,如何实现?
这是我的一个作业题如下:
编写一个求任意多边形面积的程序。提示:通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,然后再进行计算。要求计算部分写成函数的形式,使计算程序与界面无关。
MFC
多边形面积计算
类
动态数组
------解决方案--------------------
用std::vector
------解决方案--------------------
//////////////////////////////////////////////////////////////////////////////
//类定义
class CPolygon
{
public:
CPolygon(int num);
virtual ~CPolygon();
float GetArea(); //取得面积
BOOL SetPoint(int point,float x,float y);//设置第point个点的坐标
private:
BOOL Check(); //检查是否有数据没有设置
int pCount; //边数,也就是顶点数
float *px; //顶点x的数组
float *py; //顶点y的数组
BYTE *pv; //设置数据标志
};
//////////////////////////////////////////////////////////////////////////////
//类实现
CPolygon::CPolygon(int num)
{
if(num<3) //至少是三角形
{
px=NULL;
py=NULL;
pv=NULL;
pCount=0;
}
else
{
px=new float[num]; //按num开辟内存
py=new float[num];
pv=new BYTE[num];
memset(px,0,sizeof(float)*num);//初始化内存
memset(py,0,sizeof(float)*num);//初始化内存
memset(pv,0,sizeof(BYTE)*num); //初始化内存
pCount=num;
}
}
CPolygon::~CPolygon() //用完要回收开辟的内存
{
if(px) delete []px;
if(py) delete []px;
if(pv) delete []px;
px=NULL;
py=NULL;
pv=NULL;
}
BOOL CPolygon::SetPoint(int point,float x,float y)
{
if(point>=0&&point<pCount) //点在范围内
{
*(px+point)=x;
*(py+point)=y;
*(pv+point)=1; //置1,表示数据已经设置过了
return TRUE;
}
return FALSE;
}
BOOL CPolygon::Check() //检查合法性
{
if(pCount==0)
return FALSE;
for(int i=0;i<pCount;i++)
{
if(*(pv+i)==0)
return FALSE;
}
return TRUE;
}
float CPolygon::GetArea();
{
if(Check()) //如果数据准备好
{
//计算结果
//返回结果
}
return 0.0; //数据没准备好就返回0.0
}
//////////////////////////////////////////////////////////////////////////////
//类调用,以三角形为例
CPolygon xObject(3); //定义一个三角形
xObject.SetPoint(0,20.2,30.3); //设置第一点的值
xObject.SetPoint(1,80.4,50.5); //设置第二点的值
xObject.SetPoint(2,70.6,40.7); //设置第三点的值
float Result=xObject.GetArea();
CString Info;
if(Result==0.0)
Info="计算有错误,请检查设置的点是否正确!";
else
Info.Format("三角型的值是:%f",Result);
MessageBox(Info); //显示结果
------解决方案--------------------
"通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,"