GIS程序设计.docx
- 文档编号:9093900
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:33
- 大小:162.69KB
GIS程序设计.docx
《GIS程序设计.docx》由会员分享,可在线阅读,更多相关《GIS程序设计.docx(33页珍藏版)》请在冰豆网上搜索。
GIS程序设计
资源与环境工程学院
《GIS程序设计》实验报告
姓名
学号
专业
班级
任课教师
实验1:
在小范围内用C++增强C的功能
一、实验目的和要求
快速掌握C++语言编程的方法,在小范围内增强C++的功能,主要内容有:
(1)输入流、输出流的使用;
(2)函数原型;(3)new和delete运算符分配内存。
二、实验代码(附注释)或解答
1..编写一个用输入和输出流运算符进行的输入和输出的程序。
从键盘输入两个数,分别对两个数进行加,减,乘和除的运算。
并输出计算结果,如:
23+123=146。
cout<<"和、差、积、商:
";
cout<
2.用new和delete运算符动态分配内存空间的方法编写程序。
从键盘输入33整型数组的数据,并计算出所有元素之和,打印出最大值和最小值。
输入输出要用流运算符实现。
inti,j,sum=0,max,min;
int(*p)[3]=newint[3][3];
cout<<"输入数据:
"< for(i=0;i<3;i++) for(j=0;j<3;j++) { cin>>p[i][j];sum+=p[i][j]; } max=p[0][0]; min=p[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) { if(p[i][j]>max) max=p[i][j]; if(p[i][j] min=p[i][j]; } cout<<"数组的和、最大值、最小值: "< cout< delete[]p; 3.用内联函数编写程序。 输入圆柱的半径和高,计算圆柱的底面周长,表面积和体积。 底面周长,表面积和体积的实现用内联函数实现。 #definePI3.14 inlinedoublelength(doubler,doubleh) { return2*PI*r; } inlinedoublearea(doubler,doubleh) { return2*PI*r*h+2*PI*r*r; } inlinedoublevolume(doubler,doubleh) { returnPI*r*r*h; } voidmain() { intr,h;//r半径,h,高cout<<"输入半径和高: "< cout<<"圆柱底面周长、表面积、体积: "< cout< } 4.仿照教材中的例题,用引用的方法给包含十个元素的一维数组赋值,其值分别为9,8,7,6,5,4,3,2,1。 inti,int1; for(i=0;i<9;i++) { intint1=i; int&rint=int1; cout<<"&int1: "<<&int1<<"int1: "< cout<<"&rint"<<&rint<<"rint: "< } 三、实验总结 本次的四个实验是要我们初步练习C++的基本使用,在练习中学习如何使用C++。 试验中出现了许多小的问题,但是经过改正使得我们对C++的使用更加熟练了。 通过基本的练习学会了C++的初步使用。 实验2: 类的定义与应用 一、实验目的和要求 掌握类定义的方法,理解类类型,实例的含义,体会面向对象程序设计中数据隐藏的概念。 二、实验代码(附注释)或解答 1.定义一个时间类Time,它能提供由时分秒组成的时间。 要求能够修改时间和打印出时间。 classTime { public: voidset(inth,intm,ints);voidshow(); private: inthour,minute,second; }; voidTime: : set(inth,intm,ints) { hour=h; minute=m; second=s; } voidTime: : show() { cout< } voidmain() { inti,j,k; cout<<"输入时分秒: "< } 2.定义一个计算器类,能够实现加减乘除四则运算,对有关成员函数重载,以实现不同类型数据的运算。 并用构造函数和析构函数将数据成员初始化为0。 classcalculator { public: calculator();~calculator(){} doublejia(doublei,doublej); doublejian(doublei,doublej); doublecheng(doublei,doublej);doublechu(doublei,doublej); private: doublei,j,x,y; }; calculator: : calculator() { i=0;j=0; } doublecalculator: : jia(doublei,doublej) { returni+j; } doublecalculator: : jian(doublei,doublej) { returni-j; } doublecalculator: : cheng(doublei,doublej) { returni*j; } doublecalculator: : chu(doublei,doublej) { returni/j; } voidmain() { doublei,j; intk; calculatorcalculator1; cout<<"输入两个数,并输入要进行的运算(加选1,减选2,乘3,除4): "< cin>>i>>j>>k; switch(k) { case1: cout<<"结果为: "< case2: cout<<"结果为: "< case3: cout<<"结果为: "< case4: cout<<"结果为: "< } } 3.编写一个画图的程序,定义圆,直线和矩形等基本绘图元素的类,能够实现基本的绘图功能。 三、实验总结 本次试验使得我们初次了解了C++中至关重要的类的使用,这是C++这一语言面向对象的重要使用。 类是我们第一次使用,练习中遇到了一些问题,经过修改使得我们对类的使用加深了很多了解。 实验3: 类中静态数据成员和友元函数的使用 一、实验目的和要求 二、实验代码(附注释)或解答 1.有如下类的定义。 类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。 (有两种方法即不用this指针和用this指针) #include classMyclass {public: Myclass(inta,intb){x=a;y=b;} Voidcopy(Myclass&my); Voidprint() {cout<<“x=”< cout<<”y=”< } private: intx,y; }; voidmain() {Myclassmy(10,20),t(30,40); my.print(); my.Copy(t); my.print(); } classMyclass {public: Myclass(); Myclass(inta,intb){x=a;y=b;} ~Myclass(){} voidcopy(Myclass&my); voidprint() {cout<<"x="< cout<<"y="< } private: intx,y; }; voidMyclass: : copy(Myclass&my) { this->x=my.x; this->y=my.y; } voidmain() {Myclassmy(10,20),t(30,40); my.print(); my.copy(t); my.print(); } 2.商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。 编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。 (本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格) classCarlo { public: Carlo(); Carlo(intx,inty) { zhliang=x; djia=y; } ~Carlo(){} voidfun1()//买入 { sumjia=sumjia+djia*zhliang; sumzhliang=sumzhliang+zhliang; cout<<"买入后总价格和总重量: "< } voidfun2()//卖出 { sumjia=sumjia-djia*zhliang; sumzhliang=sumzhliang-zhliang; cout<<"卖出后总价格和总重量: "< } private: intzhliang,djia; staticintsumzhliang,sumjia; }; intCarlo: : sumjia=0; intCarlo: : sumzhliang=0; voidmain() { intzhliang,djia; cout<<"输入买入的货物重量及货物单价: "< cin>>zhliang>>djia; CarloCarlo1(zhliang,djia); Carlo1.fun1(); cout<<"输入卖出的货物重量及价格: "< cin>>zhliang>>djia; CarloCarlo2(zhliang,djia); Carlo2.fun2(); } 3.有两个类分别为整型数集合类和实型数集合数类。 将缺少的内容补齐。 并完成要求的其它内容。 如: classIntset {private: intnum[3]; public: Intset(intx,inty,intz) {//添加初始化内容} voidprint() {//打印数据} }; classfloatset {private: floatnum[3]; public: floatset(floatx,floaty,floatz) {//添加初始化内容} voidprint() {//打印数据} }; (1)在Intset中再增加一个成员函数,将对象的整型数据拷贝的到floatset的对象中此成员函数的原型为: voidsettofloat(floatset&set);//形参为拷贝的目标对象 classIntset {private: intnum[3]; public: Intset(intx,inty,intz) {num[0]=x;num[1]=y;num[2]=z;} voidsettofloat(); voidprint() {cout< }; classfloatset {private: floatnum[3]; public: floatset(); floatset(floatx,floaty,floatz) {num[0]=x;num[1]=y;num[2]=z;} voidprint() {cout< }; voidIntset: : settofloat() { intx,y,z; x=num[0]; y=num[1]; z=num[2]; floatsetfloatset1(x,y,z); floatset1.print(); } voidmain() { Intsetset(1,2,3); set.print(); set.settofloat(); } (2) (1)办法需要调用函数,程序的开销较大,可以定义一个友元函数来实现上述的功能。 classIntset { private: intnum[3]; public: Intset(); Intset(intx,inty,intz) {num[0]=x;num[1]=y,num[2]=z;} voidcopy(); voidprint()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 程序设计