我需要在类里建立一个n*2的动态数组(这样才能实现在所有的类的成员函数进行引用数据),然后利用MFC的控件按钮为其添加数据,如何实现?这是我的一个作业题如下:
编写一个求任意多边形面积的程序。提示:通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,然后再进行计算。要求计算部分写成函数的形式,使计算程序与界面无关。MFC多边形面积计算类动态数组
编写一个求任意多边形面积的程序。提示:通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,然后再进行计算。要求计算部分写成函数的形式,使计算程序与界面无关。MFC多边形面积计算类动态数组
解决方案 »
- 仿VC6.0界面(Demo_DevStudio)m_wndWorkspace问题
- 网络共享中遇到的问题。。。。。
- 多线程读写同一链表的问题?在线等
- 帮我看看CString数据类型,其中CString老是编译不行
- 做一个文件打开对话框,只要选一个目录,选中目录下所有某一类型的文件
- 简单的程序,在VC上运行出错,
- 请问如何打开一个文件夹,并且求出里面的文件个数呀(万分着急,在线等待!!)
- 请你帮帮忙!!
- 关于socket:
- VC6的MFC单文档程序中ActiveX控件不能显示怎么办
- 全局鼠标钩子无法捕获弹出模态对话框状态下的记事本客户区事件
- 求救:VC中出现 error C2027: use of undefined type 'COleDispatchImpl'错误
//类定义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); //显示结果
{
int x;
int y;
}
然后定义个
vector<CPoint>;
这样每次push_back就可以加入数据了。
我是基于MFC做的,需要做一个界面实现。在你列举的代码中,我没理解的是数据的存储在什么地方?就是说我假设我需要存储一系列坐标在一个数组中,然后在面积计算的时候调用这个数组里的数据,实现计算。能不能解释一下我该如何操作
你完成GetArea()函数就可以了
和MFC的接口
你看类调用部分就是举的例