《C++程序设计实践8.doc》由会员分享,可在线阅读,更多相关《C++程序设计实践8.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+程序设计实践上机指导书(第八次)专业 计算机科学与技术 班级 学号 姓名 沈阳工程学院信息学院实践成绩评价说明1) 上机前充分准备实践材料,对上机内容有程序草稿。(10分)2) 独立完成实践任务,对实践过程非常清晰。(30分)3) 认真理解知识点,能够与理论知识相结合。(10分)4) 在机房遵守上机守则,接受实践指导教师的监督与管理。(20分)5) 认真填写实践指导书,写出实践小结。(10分)6) 在实践中具备一定的创新思想,能够主动与指导教师探讨。(5分)7) 加大实践工作量,主动完成实践指导书中的选做题目。(5分)8) 掌握程序调试的方法,认真完成程序调试工作,使程序能够运行(10分)
2、。上机八 类与对象(四)一、目的1、学习类的组合; 2、体会类的组合的构造函数的使用方式; 3、理解利用友元关系实现数据共享的机制4. 掌握类的友元函数以及友元类的实现方法;二、要求:1. 在上课之前,每一个同学必须将题目、程序编写完毕,做好充分的准备。2. 所有环节均由每位同学独立完成,严禁抄袭他人结果。三、步骤和内容1、定义点类,使用友元函数计算两点间的距离,体会友元函数的使用2、在题目1的基础上,设计一个类Trig,给定三角形的三个定点的坐标(平面直角坐标系)要求:a) 用一个友元函数计算三角形面积。b) 将友元函数存放在一个类中,并将该类修改为类Trig的友元类注:三角形的面积公式为:
3、已知三角形三边a,b,c,则(海伦公式)(p=(a+b+c)/2)S=3. 设计一个类Sample,它有两个私有数据成员a和n(a中元素的个数)。请对a中数据进行排序,并将排序函数作为友元函数或者放在类process中。四、思考题1、在类的组合中,构造函数的声明顺序是怎样的?2、友元关系可以传递么?为什么说不要过多的使用友元关系?五、结果分析1、定义点类,使用友元函数计算两点间的距离,体会友元函数的使用#include#includeusing namespace std;class Trigpublic:Trig(int m,int n)x1=m;y1=n;Trig(double a,dou
4、ble b,double c)x=a;y=b;z=c;friend add(Trig &a,Trig &b,Trig &c,Trig &d)double s1,s2,s3,s4,area1,area2,p,s;s1=sqrt(fabs(a.x1-b.x1)*fabs(a.x1-b.x1)+fabs(a.y1-b.y1)*fabs(a.y1-b.y1);s2=sqrt(fabs(a.x1-c.x1)*fabs(a.x1-c.x1)+fabs(a.y1-c.y1)*fabs(a.y1-c.y1);s3=sqrt(fabs(c.x1-b.x1)*fabs(c.x1-b.x1)+fabs(c.y1-b
5、.y1)*fabs(c.y1-b.y1);s4=0.5*(s1+s2+s3);area1=sqrt(s4*(s4-s1)*(s4-s2)*(s4-s3);p=0.5*(d.x+d.y+d.z); area2=sqrt(p*(p-d.x)*(p-d.y)*(p-d.z); s=area1+area2;return s;private:int x1,y1;double x,y,z;int main()Trig A(1,0),B(0,4),C(0,0),D(3,4,5);double ss;ss=add(A,B,C,D);cout两个三角形面积的和:endl;coutssendl;return 0;
6、2、在题目1的基础上,设计一个类Trig,给定三角形的三个定点的坐标(平面直角坐标系)要求:a) 用一个友元函数计算三角形面积。b) 将友元函数存放在一个类中,并将该类修改为类Trig的友元类注:三角形的面积公式为:已知三角形三边a,b,c,则(海伦公式)(p=(a+b+c)/2)S=#include#includeclass Cpoint public: float a1,b1;Cpoint(float i,float j)/构造函数a1=i;b1=j;class triaprivate:double L1,L2,L3,s;public: double area; Cpoint A,B,C;
7、/类Cpoint下的三个对象tria(float a,float b,float c,float d,float e,float f):A(a,b),B(c,d),C(e,f)/初始化列表L1=sqrt(A.a1-B.a1)*(A.a1-B.a1)+(A.b1-B.b1)*(A.b1-B.b1);L2=sqrt(A.a1-C.a1)*(A.a1-C.a1)+(A.b1-C.b1)*(A.b1-C.b1);L3=sqrt(B.a1-C.a1)*(B.a1-C.a1)+(B.b1-C.b1)*(B.b1-C.b1);s=(L1+L2+L3)/2);area=sqrt(s*(s-L1)*(s-L2)
8、*(s-L3); friend void print(tria D);void print(tria D) coutD.areaendl;/三角形面积的输出void main() tria D(4.0,2.0,3.0,4.0,5.0,6.0); print(D);3. 设计一个类Sample,它有两个私有数据成员a和n(a中元素的个数)。请对a中数据进行排序,并将排序函数作为友元函数或者放在类process中。#includeusing namespace std;class process;class Samplepublic:Sample(int n1)n=n1; a=new intn;f
9、riend process;void input()for(int i=0;iai;coutendl;private:int n,*a;class processpublic: void paixu(Sample &s)for(int j=0;js.n-1;j+)for(int i=0;is.ai+1)int t;t=s.ai;s.ai=s.ai+1;s.ai+1=t;coutthe sorted number :endl;for(int i=0;is.n;i+)couts.ait;coutendl;int main()int n;coutinput n number :n;Sample a(
10、n);a.input();process b;b.paixu(a);return 0;六、指导教师评阅成绩8成评师0 ) )( )( )( . + 0 .+; 0 + -.; ( ; + 0 ) = 中 在函友函将序进数请数素(和员据私它, 类) )0. .0.0 ( 输积形/ ) ) -* ) = ) =). -( . ( ). (* ( * . ) - * ( ) =列始/ )(),() , , , 对个下 类; , =函造/ ( ) ((式海,, 边角为公形元友 为修将中一数友积形角函友 )坐直标点个角给 类计上的目0 和积三个 ), ),0)(), ) , ) * ) ( ) +. *
11、0) ( )- = ) *0) - . - ( ) ). . ) . * ( ( ). ( * (+ - ( ( , , , ) & ( ; , , ) 使使元体的两计元使义分果结系元用的说为?以元的怎顺的造,的考中 者数为作将,行中。个元 员据个有 类设 ) (公海,,三角:积形元的 为改将,在数友积面三数友用)要系面标的三形给 类个设的题使数友,的两数元,点内骤。结袭严成学同由备的好毕写序将学一,求法现的友函元掌机的据系友解;式用函合类;组习目四(与)0(够序作序程,的序分 题的导实动量作分分讨导动能思创一分 结践,指实分分。管师指实则机分 。相理与识分分。非践,践实分0稿序有上料备充说说学信程 与算 次导机实序 实次与 信充上序实践非分。分指。分,结思能分量的 的作序与目组函式系机函友,将序备同严骤,元友题的 形面用数友在为元积角, )设有个元。,为 ,的元?的结分计体使 , ;( ( * )( . ) - ) )()*+ ) ) (,) 积和 0上给点坐 形积将修友角 式 ( 造 类对 ,), 列 ). *. ( .= )* 积 (. ) ) 私素请序友 - 0;+ + )( 0成 8