《测绘程序设计(VC.net)》上机实验报告(VisualC++.Net)班级:学号:姓名:序号:21二零一二年三月十五日实验3数组、指针与函数实验目的掌握数组的定义、引用及应用方法掌握指针和动态数组掌握函数的定义、引用及应用方法。实验内容1、编写一个球任意多边形的面积的程序。提示:通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,然后在进行计算。要求计算部分写成函数形式,式计算程序与界面无关。例如:P=1/2(x1+x2)(y2-y1)+1/2(x2+x3)(y3-y2)+1/2(x3+x4)(y4-y3)+1/2(x4+x1)(y1-y4)2、由三角形三个边长求内角函数;5、交会定点计算函数设计把前面学过的前方交会、侧边交会、后方交会程序写成函数的形式,然后再通过主程序调用实验步骤实验3.1如下图所示,新建一个基于对话框的MFC文件,并根据要求设置编辑框的属性,以满足实验的要求根据要求添加相应的函数代码voidCshiyan31Dlg::OnBnClickedButton1(){//计算控件程序代码UpdateData(TRUE);intiLine;intiPtCount;CString*strTmp=NULL;intn;CString*pstrLine=SplitString(strInput,13,iLine);if(iLine4)//多边形最少三个边,否则不能构成多边形{MessageBox(_T(数据缺省!));return;}iPtCount=_ttoi(pstrLine[0]);//第一行为多边形边数structPoint//建立储存点的结构体{double*dPx;double*dPy;}dPt;dPt.dPx=newdouble[iPtCount];dPt.dPy=newdouble[iPtCount];if((iLineiPtCount+1)||(iPtCount3))//判断错误情况:数据与边数不符与不构成多边形{MessageBox(_T(输入有误!));return;}else{for(inti=0;iiPtCount;i++){strTmp=SplitString(pstrLine[i+1],44,n);dPt.dPx[i]=_tstof(strTmp[0]);dPt.dPy[i]=_tstof(strTmp[1]);if(strTmp!=NULL)//释放内存{delete[]strTmp;strTmp=NULL;}}if(strTmp!=NULL)//释放内存{delete[]strTmp;strTmp=NULL;}dArea=fabs(ComptArea(dPt.dPx,dPt.dPy,iPtCount));}if(pstrLine!=NULL)//释放内存{delete[]pstrLine;pstrLine=NULL;}UpdateData(FALSE);}voidCshiyan31Dlg::OnBnClickedOk(){//初始化strInput=输入坐标;dArea=0;UpdateData(FALSE);}下面是运行结果:实验3.2根据实验要求新建一个基于对话框的MFC文件,并根据要求添加相应需要的编辑框和静态框,已经命令按钮。并根据需要改变各个命令按钮的属性。双击命令按钮进入函数编辑区如下所示:在函数编辑区添加相应的函数代码voidCshiyan32Dlg::OnBnClickedButton1(){//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);doubleA,B,C,M,N,X;M=cos(A);N=cos(B);X=cos(C);M=(b*b+c*c-a*a)/(2*b*c);N=(a*a+c*c-b*b)/(2*a*c);X=(a*a+b*b-c*c)/(2*a*b);UpdateData(FALSE);}voidCshiyan32Dlg::OnBnClickedOk(){//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);a=b=c=0;//对变量初始化UpdateData(FALSE);//OnOK();}voidCshiyan32Dlg::OnBnClickedCancel(){//TODO:在此添加控件通知处理程序代码//OnCancel();}运行结果实验3.3根据需要新建一个基于对话框的MFC文件并添加所需要的静态框和编辑框以及命令按钮如下所示:双击命令按钮进入函数编辑区,在需要的位置添加相应的函数代码:运行结果:实验3.4根据实验要求新建一个基于对话框的MFC文件,并添加相应的静态框和编辑框,按照需要改变各个编辑框的属性这些在之前的事眼中都已经用到,所以这里就不再一一解释:按照需要添加相应的函数代码:下面是运行结果实验3.5按照要求建立一个基于对话框的MFC文件如下图添加三个button按钮分别命名为“前方交会”“侧方交会”“后方交会”:并分别在源文件中添加三个DIG,分别命名为“qiangfangjiaohui”“cefangjiaohui”“houfangjiaohui”在头文件中分别添加三个源文件如图所示:并在相应的button添加如下所示的代码:运行结果如下:表示调用关系已经建立成功在前方交会对应的Dialog下的函数框中添加相应的静态框和编辑框以及命令按钮,并在函数中添加相应的函数代码,如下所示前方交会的代码前方交会运行结果后方交会的代码后方交会运行成果侧方交会的代码侧方交会运行成果实验结果本次试验比之前所做的实验的实验量都大好多,而且难度也又增加,试验时间缩短了,但是这个更加考验我们的能力,虽然这个让我们在实验的过程中觉得非常的紧张,但是真的试验结束后还是觉得收获颇丰,在这次的实验中,中间三个实验都比较好做,而第一个实验因为要求计算部分写成函数形式式计算程序与界面无关。所以难度大大增加,而最后一个实验其实就是一个主干加上各个实验校分块你的分支,但是由于在运行检验过程中错误不显示。所以再找错的时候就增加了难度与工作量。但是幸好还是做完了,这其中有些是自己的独立完成的,还有的是通过同学的帮助,在实验过程还发现了一个很严重的问题,之前学过的测绘公式居然都忘记了,所以还要到书上面找,给我们敲响了警钟,以后一定要认真学习并谨记在心。