GIS程序设计Word下载.docx
- 文档编号:22230013
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:33
- 大小:162.69KB
GIS程序设计Word下载.docx
《GIS程序设计Word下载.docx》由会员分享,可在线阅读,更多相关《GIS程序设计Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
for(j=0;
j<
j++)
{
cin>
>
p[i][j];
sum+=p[i][j];
}
max=p[0][0];
min=p[0][0];
if(p[i][j]>
max)
max=p[i][j];
if(p[i][j]<
min)
min=p[i][j];
cout<
数组的和、最大值、最小值:
sum<
max<
min<
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<
输入半径和高:
cin>
r>
h;
圆柱底面周长、表面积、体积:
length(r,h)<
area(r,h)<
volume(r,h)<
4.仿照教材中的例题,用引用的方法给包含十个元素的一维数组赋值,其值分别为9,8,7,6,5,4,3,2,1。
inti,int1;
9;
{
intint1=i;
int&
rint=int1;
&
int1:
int1<
int1:
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;
show()
hour<
时"
minute<
分"
second<
秒"
inti,j,k;
输入时分秒:
i>
j>
k;
Timetime;
time.set(i,j,k);
time.show();
2.定义一个计算器类,能够实现加减乘除四则运算,对有关成员函数重载,以实现不同类型数据的运算。
并用构造函数和析构函数将数据成员初始化为0。
classcalculator
calculator();
~calculator(){}
doublejia(doublei,doublej);
doublejian(doublei,doublej);
doublecheng(doublei,doublej);
doublechu(doublei,doublej);
doublei,j,x,y;
calculator:
calculator()
i=0;
j=0;
doublecalculator:
jia(doublei,doublej)
returni+j;
jian(doublei,doublej)
returni-j;
cheng(doublei,doublej)
returni*j;
chu(doublei,doublej)
returni/j;
doublei,j;
intk;
calculatorcalculator1;
输入两个数,并输入要进行的运算(加选1,减选2,乘3,除4):
cin>
switch(k)
case1:
结果为:
calculator1.jia(i,j)<
break;
case2:
calculator1.jian(i,j)<
case3:
calculator1.cheng(i,j)<
case4:
calculator1.chu(i,j)<
3.编写一个画图的程序,定义圆,直线和矩形等基本绘图元素的类,能够实现基本的绘图功能。
本次试验使得我们初次了解了C++中至关重要的类的使用,这是C++这一语言面向对象的重要使用。
类是我们第一次使用,练习中遇到了一些问题,经过修改使得我们对类的使用加深了很多了解。
实验3:
类中静态数据成员和友元函数的使用
1.有如下类的定义。
类成员函数copy用于实现两个对象的相互拷贝,请完成该函数的实现。
(有两种方法即不用this指针和用this指针)
#include<
iostream.h>
classMyclass
{public:
Myclass(inta,intb){x=a;
y=b;
Voidcopy(Myclass&
my);
Voidprint()
{cout<
“x=”<
x<
”y=”<
y<
}
intx,y;
voidmain()
{Myclassmy(10,20),t(30,40);
my.print();
my.Copy(t);
my.print();
Myclass();
~Myclass(){}
voidcopy(Myclass&
voidprint()
x="
y="
voidMyclass:
copy(Myclass&
my)
this->
x=my.x;
y=my.y;
my.copy(t);
2.商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。
编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。
(本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格)
classCarlo
Carlo();
Carlo(intx,inty)
zhliang=x;
djia=y;
~Carlo(){}
voidfun1()//买入
sumjia=sumjia+djia*zhliang;
sumzhliang=sumzhliang+zhliang;
买入后总价格和总重量:
sumjia<
sumzhliang<
voidfun2()//卖出
sumjia=sumjia-djia*zhliang;
sumzhliang=sumzhliang-zhliang;
卖出后总价格和总重量:
intzhliang,djia;
staticintsumzhliang,sumjia;
intCarlo:
sumjia=0;
sumzhliang=0;
输入买入的货物重量及货物单价:
zhliang>
djia;
CarloCarlo1(zhliang,djia);
Carlo1.fun1();
输入卖出的货物重量及价格:
CarloCarlo2(zhliang,djia);
Carlo2.fun2();
3.有两个类分别为整型数集合类和实型数集合数类。
将缺少的内容补齐。
并完成要求的其它内容。
如:
classIntset
{private:
intnum[3];
Intset(intx,inty,intz)
{//添加初始化内容}
{//打印数据}
};
classfloatset
floatnum[3];
floatset(floatx,floaty,floatz)
};
(1)在Intset中再增加一个成员函数,将对象的整型数据拷贝的到floatset的对象中此成员函数的原型为:
voidsettofloat(floatset&
set);
//形参为拷贝的目标对象
classIntset
intnum[3];
{num[0]=x;
num[1]=y;
num[2]=z;
voidsettofloat();
num[0]<
num[1]<
num[2]<
};
classfloatset
floatset();
voidIntset:
settofloat()
intx,y,z;
x=num[0];
y=num[1];
z=num[2];
floatsetfloatset1(x,y,z);
floatset1.print();
Intsetset(1,2,3);
set.print();
set.settofloat();
(2)
(1)办法需要调用函数,程序的开销较大,可以定义一个友元函数来实现上述的功能。
{
Intset();
num[1]=y,num[2]=z;
voidcopy();
floatset();
{a=x;
b=y;
c=z;
~floatset(){}
a<
b<
c<
friendvoidIntset:
copy();
floata,b,c;
copy()
a=(float)num[0];
b=(float)num[1];
c=(float)num[2];
floatsetfloatset1(a,b,c);
floatset1.print();
Intsetintset1(1,2,3);
intset1.print();
intset1.copy();
请分别完成两个程序。
三、思考题解答
四、实验总结
本次试验是关于类中静态成员和友元函数的使用的练习,静态成员和友元函数是类中比较重要的东西,通过对他们的练习能够让我们进一步学习如何使用类。
实验4:
运算符重载
1.先读程序,预测程序的输出结果,再运行程序验证程序的输出。
用友元重载方式重新编写次程序。
#include<
classVector
{public:
Vector(){}
Vector(inti,intj){x=i;
y=j;
friendVectoroperator+=(Vectorv1,Vectorv2)
{v1.x+=v2.x;
v1.y+=v2.y;
returnv1;
Vectoroperator-=(Vectorv)
{Vectortemp;
temp.x=x-v.x;
temp.y=y-v.y;
returntemp;
voiddisplay()
("
"
)"
intx,y;
Vectorv1(1,2),v2(3,4),v3,v4;
v3=v1+=v2;
v4=v1-=v2;
v1="
v1.display();
v2="
v2.display();
v3="
v3.display();
v4="
v4.display();
voidset(inta,intb){x=a;
friendVectoroperator+=(Vector&
v1,Vector&
v2);
friendVectoroperator-=(Vector&
Vectoroperator+=(Vector&
v2)
Vectors;
s.set(v1.x+v2.x,v1.y+v2.y);
returns;
Vectoroperator-=(Vector&
s.set(v1.x-v2.x,v1.y-v2.y);
Vectorv1,v2,v3,v4;
v1.set(1,2);
v2.set(3,4);
2.定义一个有理数类,重载比较运算符.写一个完整的程序,进行数据成员的设置和输出。
classrational
{private:
longdenom,den;
//denom为分子,den为分母
rational(intnum=0,intdenom=1;
intoperator<
(rationalr)const;
=(rationalr)const;
intoperator==(rationalr)const;
intoperator!
//这里增加赋值和读出函数
rational(){}
rational(inta,intb){denom=a;
den=b;
(rationalr)const
{floatx,y;
rationalv;
x=(float)r.denom/r.den;
y=(float)v.denom/v.den;
if(x<
y)
return1;
elsereturn0;
=(rationalr)const
floatx,y;
rationalv;
x=(float)r.denom/r.den;
y=(float)v.denom/v.den;
if(x<
=y)
return1;
elsereturn0;
intoperator==(rationalr)const
if(x==y)
if(x!
rationalr(1,2),v(3,4);
r(1,2),v(3,4)"
if(r<
v)
r<
v"
=v)
=v"
if(r==v)
r==v"
if(r!
r!
3.设计一个复数类,并重载+,-,×
,/和<
运算符。
写完整程序并调试
classPoint
voidset(inta,intb){x=a,y=b;
Pointoperator+(constPoint&
d)
Points;
s.set(x+d.x,y+d.y);
Pointoperator-(constPoint&
s.set(x-d.x,y-d.y);
Pointoperator*(constPoint&
s.set(x*d.x,y*d.y);
Pointoperator/(constPoint&
s.set(x/d.x,y/d.y);
friendostream&
operator<
(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 程序设计