ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:116.16KB ,
资源ID:29437311      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29437311.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++实验报告二.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++实验报告二.docx

1、c+实验报告二实验项目二 类对象成员、静态成员和友元题目:1.用两点(端点)表示一条直线段2.输出若干个三角形周长的总和,判断2个三角形的面积大小题目1:一、 需求分析1. 总体功能 一条线段可以用两个点来表示,从面向对象程序设计的角度看,点是线段的组成部分,于是,点类和线段类之间形成部分整体关系。本题目的问题就是如何通过实现部分整体关系来实现和操作线段类。 自行设计线段类,用两个点对象作为线段的属性。编写程序,定义两条线段,从键盘输入它们的端点信息,并输出这两条线段,在程序中,显示这两条线段的长度,在程序中,改变这两条线段的长度,改变线段的有关信息从键盘输入,该信息是在原有长度的基础上增加一

2、个增量t并显示改变后的线段长度和线段。2. 输入形式和数据类型输入形式为坐标点的值,数据类型为double型3. 输出形式 L1:(a1,b1),(a2,b2) L2:(c1,d1),(c2,d2)4. 测试数据(1)定义的两条线段为L1和L2。L1:(19,75),(11,12)L2:(86,19),(25,01)(2)改变两条线段的长度增量t=10二、 模块设计1. 本程序中用到的类模型 Point类的模型如下: 属性: 横纵坐标X,Y; 服务:提供x和提供y,相应函数原型为:int GetX();和int GetY(); Line类的模型如下: 属性: 两个点对象Point op1,op

3、2 服务:查询位置Where函数和求长度length函数2. 本程序中类与类之间的关系,给出类层次结构图(1)point类与Line类之间是部分整体关系3. main函数的流程构建线段L1输出两点并输出线段L1长度改变L1长度输出L1改变后的位置输出L1改变后的长度构建线段L2输出两点并输出线段L2长度改变L2长度输出L2改变后的位置输出L2改变后的长度三详细设计1给出模块设计中各类模块的实现算法(1)Point类的定义与实现class Point double X,Y;public: Point(double x=0,double y=0) X=x; Y=y; coutConstructor

4、 of Point.endl; double GetX() return X; double GetY() return Y; void Set(double x,double y) X=x;Y=y; Point() coutDestructor of Point.endl; /析构函数;(2)Line类的定义与实现class Line Point op1,op2; public: void Where(double &x1,double &y1,double &x2,double &y2) /设置点的位置 op1.Set(x1,y1); op2.Set(x2,y2); x1=op1.GetX

5、(); y1=op1.GetY(); x2=op2.GetX(); y2=op2.GetY(); double length(double x1,double y1,double x2,double y2) /计算线段长度 double l; l=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); return l; double length2(double x1,double y1,double x2,double y2,double t) /计算改变后线段长度 double l; l=length(x1,y1,x2,y2); l+=t; return l; Line

6、()coutDestructor of Line.endl;2写出主函数的实现void main() Line L1,L2; double x1,y1,x2,y2,t,x,y; cout构建线段L1,请输入L1的两个点:x1y1x2y2; cout线段L1点的位置:endl; L1.Where(x1,y1,x2,y2); coutL1:(x1,y1),(x2,y2)endl; coutL1的长度length=L1.length(x1,y1,x2,y2)endlendl; cout请输入长度增量t:t; cout改变后线段L1点的位置:endl; change(x1,y1,x2,y2,t,L1.

7、length(x1,y1,x2,y2),x,y); coutL1:(x1,y1),(x,y)endl; cout改变后的L1的长度length=L1.length2(x1,y1,x2,y2,t)endlendl; cout构建线段L2,请输入L2的两个点:x1y1x2y2; cout线段L2点的位置:endl; L2.Where(x1,y1,x2,y2); coutL2:(x1,y1),(x2,y2)endl; coutL2的长度length=L2.length(x1,y1,x2,y2)endlendl; cout请输入长度增量t:t; cout改变后线段L2点的位置:endl; change

8、(x1,y1,x2,y2,t,L2.length(x1,y1,x2,y2),x,y); coutL2:(x1,y1),(x,y)endl; cout改变后的L2的长度length=L2.length2(x1,y1,x2,y2,t)endl; 四调试分析 一开始出现了很多的错误,看着都让人差点没有信心了,经过检查,发现很多是语法问题和拼写错误。但是在确定改变线段点的位置时,纠结了很久,在main函数中也是一样,有的地方不知道该怎么写,最后经过多次尝试,终于运行成功了。五使用说明 点击运行后,按提示输入数据就可得出答案。六测试结果七附录(实验源程序)#include #include #inclu

9、de class Point double X,Y;public: Point(double x=0,double y=0) X=x; Y=y; coutConstructor of Point.endl; double GetX() return X; double GetY() return Y; void Set(double x,double y) X=x;Y=y; Point() coutDestructor of Point.endl; /析构函数; class Line Point op1,op2; public: void Where(double &x1,double &y1

10、,double &x2,double &y2) /设置点的位置 op1.Set(x1,y1); op2.Set(x2,y2); x1=op1.GetX(); y1=op1.GetY(); x2=op2.GetX(); y2=op2.GetY(); double length(double x1,double y1,double x2,double y2) /计算线段长度 double l; l=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); return l; double length2(double x1,double y1,double x2,double y2

11、,double t) /计算改变后线段长度 double l; l=length(x1,y1,x2,y2); l+=t; return l; Line()coutDestructor of Line.endl;void change(double x1,double y1,double x2,double y2,double t,double l,double &a,double &b) a=t*(x2-x1)/l+x2;b=t*(y2-y1)/l+y2; /改变点的位置 void main() Line L1,L2; double x1,y1,x2,y2,t,x,y; cout构建线段L1,

12、请输入L1的两个点:x1y1x2y2; cout线段L1点的位置:endl; L1.Where(x1,y1,x2,y2); coutL1:(x1,y1),(x2,y2)endl; coutL1的长度length=L1.length(x1,y1,x2,y2)endlendl; cout请输入长度增量t:t; cout改变后线段L1点的位置:endl; change(x1,y1,x2,y2,t,L1.length(x1,y1,x2,y2),x,y); coutL1:(x1,y1),(x,y)endl; cout改变后的L1的长度length=L1.length2(x1,y1,x2,y2,t)end

13、lendl; cout构建线段L2,请输入L2的两个点:x1y1x2y2; cout线段L2点的位置:endl; L2.Where(x1,y1,x2,y2); coutL2:(x1,y1),(x2,y2)endl; coutL2的长度length=L2.length(x1,y1,x2,y2)endlendl; cout请输入长度增量t:t; cout改变后线段L2点的位置:endl; change(x1,y1,x2,y2,t,L2.length(x1,y1,x2,y2),x,y); coutL2:(x1,y1),(x,y)endl; cout改变后的L2的长度length=L2.length2

14、(x1,y1,x2,y2,t)endl; 题目2:一、需求分析1. 总体功能 本题目的问题是,如何利用静态成员机制,求得若干个三角形周长的总和以及如何利用友元,使三角形的用户面积判断模块能访问三角形的私有成员。要求学生自行设计三角形类模型,确定属性和服务,编写程序,定义若干个三角形,从键盘输入与它们的属性有关的数据,并输出这些三角形即其周长。输入的数据是三角形的三边信息,程序中要能判断输入数据的合法性。同时在程序中,判断这些三角形其中的2个的面积大小,并输出判断结果。2输入形式和数据类型输入三角形三边长,数据类型为double型。3 输出形式输出这些个三角形周长的总和S,类型为double型。

15、判断这些三角形其中的2个的面积大小,并输出判断结果。结果用如下形式: 三角形1 或者 或者 三角形24 测试数据1三角形的个数定为3个:ot1,ot2和ot32三个三角形的三边数据分别为: ot1:3,4,5 ot2:6,7,8 ot3:2,8,12二、模块设计1. 本程序中用到的类模型 Triangle类的模型如下: 属性: 三边边长及周长a,b,c,l,和一个静态成员周长总和totals 服务: 一个构造函数,一个静态成员函数,一个友元函数2main函数的流程计算初始周长总和输入ot1的三边,计算其周长计算此时周长总和输入ot2的三边,计算其周长计算此时周长总和输入ot3的三边,计算其周长

16、计算此时周长总和比较ot1和ot2的面积大小三详细设计1给出模块设计中各类模块的实现算法class Triangle double a,b,c,l; double area; static double Totals; /将Totals定义为Triangle的静态数据成员 public: Triangle(double a,double b,double c) l=a+b+c; Totals+=l; area=sqrt(l/2)*(l/2)-a)*(l/2)-b)*(l/2)-c); double L() return l; double Area() return area; static

17、double GetTotals() /GetTotals为类Triangle的静态成员函数 return Totals; /friend double Area(Triangle &t); friend void fun(Triangle &a,Triangle &b); /声明函数fun为本类的友元函数;2写出主函数的实现void main() double a,b,c; cout此时三角形周长总和为:endl; couttotal=; coutTriangle:GetTotals()endlendl; /通过静态成员函数访问静态数据成员 cout输入ot1三边边长:abc; if(!(a

18、+b)c)|!(a+c)b)|!(b+c)a) coutdata error!n; cout请重新输入数据:c)|!(a+c)b)|!(b+c)a); Triangle *p1; p1=(new Triangle(a,b,c); coutot1的周长为:endl; coutl=; coutL()endl; cout此时三角形周长总和为:endl; couttotal=; coutTriangle:GetTotals()endlendl; cout输入ot2三边边长:abc; if(!(a+b)c)|!(a+c)b)|!(b+c)a) coutdata error!n; cout请重新输入数据:

19、c)|!(a+c)b)|!(b+c)a); Triangle *p2; p2=(new Triangle(a,b,c); coutot2的周长为:endl; coutl=; coutL()endl; cout此时三角形周长总和为:endl; couttotal=; coutTriangle:GetTotals()endlendl; cout输入ot3三边边长:abc; if(!(a+b)c)|!(a+c)b)|!(b+c)a) coutdata error!n; cout请重新输入数据:c)|!(a+c)b)|!(b+c)a); Triangle *p3; p3=(new Triangle(a

20、,b,c); coutot3的周长为:endl; coutl=; coutL()endl; cout此时三角形周长总和为:endl; couttotal=; coutTriangle:GetTotals()endlendl; coutot1与ot2进行面积判断:endl; fun(*p1,*p2); 四调试分析 对于这个程序,我最大的问题就是友元函数和静态成员函数的运用上,对于这两个问题真的不是很了解,同时就面积的算法来说,确实很纠结,一开始怎么都不能运行通过,根据提示检查了很久都找不出问题,最后还是在看书过后才修改正确。但是在计算面积时,最后能运行,但是第二个面积一直都运行错误,然后发现当面

21、积为整数时不会出错,但是一旦出现小数就会出错,所以我就把所有数据类型全部改为double型,就算出了正确的面积。五使用说明 只要根据提示输入数据就可运行成功。六测试结果七附录(实验源程序)#include #include #include class Triangle double a,b,c,l; double area; static double Totals; /将Totals定义为Triangle的静态数据成员 public: Triangle(double a,double b,double c) l=a+b+c; Totals+=l; area=sqrt(l/2)*(l/2)-

22、a)*(l/2)-b)*(l/2)-c); double L() return l; double Area() return area; static double GetTotals() /GetTotals为类Triangle的静态成员函数 return Totals; /friend double Area(Triangle &t); friend void fun(Triangle &a,Triangle &b); /声明函数fun为本类的友元函数;double Triangle:Totals=0; /使用类名限定A:对静态数据成员进行定义,并进行初始化void main() dou

23、ble a,b,c; cout此时三角形周长总和为:endl; couttotal=; coutTriangle:GetTotals()endlendl; /通过静态成员函数访问静态数据成员 cout输入ot1三边边长:abc; if(!(a+b)c)|!(a+c)b)|!(b+c)a) coutdata error!n; cout请重新输入数据:c)|!(a+c)b)|!(b+c)a); Triangle *p1; p1=(new Triangle(a,b,c); coutot1的周长为:endl; coutl=; coutL()endl; cout此时三角形周长总和为:endl; cout

24、total=; coutTriangle:GetTotals()endlendl; cout输入ot2三边边长:abc; if(!(a+b)c)|!(a+c)b)|!(b+c)a) coutdata error!n; cout请重新输入数据:c)|!(a+c)b)|!(b+c)a); Triangle *p2; p2=(new Triangle(a,b,c); coutot2的周长为:endl; coutl=; coutL()endl; cout此时三角形周长总和为:endl; couttotal=; coutTriangle:GetTotals()endlendl; cout输入ot3三边边长:abc; if(!(a+b)c)|!(a+c)b)|!(b+c)a) coutdata error!n; cout请重新输入数据:c)|!(a+c)b)|!(b+c)a); Triangle *p3; p3=(new Triangle(a,b,c); coutot3的周长为:endl; coutl=; coutL()endl; cout此时三角形周长总和为:endl; couttotal=; coutTriangle:GetTotals()endlendl; coutot1与ot2进行面积判断:endl; fun(*p1,*p2); void fun(T

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1