您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++程序设计实践8
C++程序设计实践上机指导书(第八次)专业计算机科学与技术班级学号姓名沈阳工程学院信息学院2实践成绩评价说明1)上机前充分准备实践材料,对上机内容有程序草稿。(10分)2)独立完成实践任务,对实践过程非常清晰。(30分)3)认真理解知识点,能够与理论知识相结合。(10分)4)在机房遵守上机守则,接受实践指导教师的监督与管理。(20分)5)认真填写实践指导书,写出实践小结。(10分)6)在实践中具备一定的创新思想,能够主动与指导教师探讨。(5分)7)加大实践工作量,主动完成实践指导书中的选做题目。(5分)8)掌握程序调试的方法,认真完成程序调试工作,使程序能够运行(10分)。3上机八类与对象(四)一、目的1、学习类的组合;2、体会类的组合的构造函数的使用方式;3、理解利用友元关系实现数据共享的机制4.掌握类的友元函数以及友元类的实现方法;二、要求:1.在上课之前,每一个同学必须将题目、程序编写完毕,做好充分的准备。2.所有环节均由每位同学独立完成,严禁抄袭他人结果。三、步骤和内容1、定义点类,使用友元函数计算两点间的距离,体会友元函数的使用2、在题目1的基础上,设计一个类Trig,给定三角形的三个定点的坐标(平面直角坐标系)要求:a)用一个友元函数计算三角形面积。b)将友元函数存放在一个类中,并将该类修改为类Trig的友元类注:三角形的面积公式为:已知三角形三边a,b,c,则(海伦公式)(p=(a+b+c)/2)S=()()()ppapbpc3.设计一个类Sample,它有两个私有数据成员a[]和n(a中元素的个数)。请对a[]中数据进行排序,并将排序函数作为友元函数或者放在类process中。四、思考题1、在类的组合中,构造函数的声明顺序是怎样的?2、友元关系可以传递么?为什么说不要过多的使用友元关系?4五、结果分析1、定义点类,使用友元函数计算两点间的距离,体会友元函数的使用#includeiostream#includecmathusingnamespacestd;classTrig{public:Trig(intm,intn){x1=m;y1=n;}Trig(doublea,doubleb,doublec){x=a;y=b;z=c;}friendadd(Trig&a,Trig&b,Trig&c,Trig&d){doubles1,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.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;returns;}private:intx1,y1;doublex,y,z;};intmain(){TrigA(1,0),B(0,4),C(0,0),D(3,4,5);doubless;ss=add(A,B,C,D);cout两个三角形面积的和:endl;coutssendl;return0;}52、在题目1的基础上,设计一个类Trig,给定三角形的三个定点的坐标(平面直角坐标系)要求:a)用一个友元函数计算三角形面积。b)将友元函数存放在一个类中,并将该类修改为类Trig的友元类注:三角形的面积公式为:已知三角形三边a,b,c,则(海伦公式)(p=(a+b+c)/2)S=()()()ppapbpc#includeiostream.h#includemath.hclassCpoint{public:floata1,b1;Cpoint(floati,floatj)//构造函数{a1=i;b1=j;}};classtria{private:doubleL1,L2,L3,s;public:6doublearea;CpointA,B,C;//类Cpoint下的三个对象tria(floata,floatb,floatc,floatd,floate,floatf):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)*(s-L3));}friendvoidprint(triaD);};voidprint(triaD){coutD.areaendl;//三角形面积的输出}voidmain(){triaD(4.0,2.0,3.0,4.0,5.0,6.0);print(D);}3.设计一个类Sample,它有两个私有数据成员a[]和n(a中元素的个数)。请对a[]中数据进行排序,并将排序函数作为友元函数或者放在类process中。#includeiostreamusingnamespacestd;classprocess;7classSample{public:Sample(intn1){n=n1;a=newint[n];}friendprocess;voidinput(){for(inti=0;in;i++)cina[i];coutendl;}private:intn,*a;};classprocess{public:voidpaixu(Sample&s){for(intj=0;js.n-1;j++)for(inti=0;is.n-1-j;i++)if(s.a[i]s.a[i+1]){intt;t=s.a[i];s.a[i]=s.a[i+1];s.a[i+1]=t;}coutthesortednumber:endl;for(inti=0;is.n;i++)couts.a[i]'\t';coutendl;}};intmain(){intn;coutinputnnumber:endl;cinn;Samplea(n);a.input();processb;b.paixu(a);8return0;}六、指导教师评阅成绩
本文标题:C++程序设计实践8
链接地址:https://www.777doc.com/doc-5348017 .html