C++程序设计实践上机指导书 (第八次)
专业 计算机科学与技术 班级 学号 姓名 XX学院信息学院 实践成绩评价说明 1)
上机前充分准备实践,对上机内容有程序草稿。(10分)
2)
独立完成实践任务,对实践过程非常清晰。(30分)
3)
认真理解知识点,能够与理论知识相结合。(10分)
4)
在机房遵守上机守则,接受实践指导教师的监督与管理。(20分)
5)
认真填写实践指导书,写出实践小结。(10分)
6)
在实践中具备一定的创新思想,能够主动与指导教师探讨。(5分)
7)
加大实践工作量,主动完成实践指导书中的选做题目。(5分)
8)
掌握程序调试的方法,认真完成程序调试工作,使程序能够运行(10分)。
上机八 类与对象(四)
一、目的 1、学习类的组合;
2、类的组合的构造函数的使用方式;
3、理解利用友元关系实现数据共享的机制 4. 掌握类的友元函数以及友元类的实现方法;
二、要求:
1. 在上课之前,每一个同学必须将题目、程序编写完毕,做好充分的准备。
2. 。? 三、步骤和内容 1、定义点类,使用友元函数计算两点间的距离,体会友元函数的使用 2、在题目1的基础上,设计一个类Trig,给定三角形的三个定点的坐标(平面直角坐标系)要求:a) 用一个友元函数计算三角形面积。
b) 将友元函数存放在一个类中,并将该类修改为类Trig的友元类 注:三角形的面积公式为:已知三角形三边a,b,c,则
(海伦公式)(p=(a+b+c)/2)
S= 3. 设计一个类Sample,它有两个私有数据成员a[]和n(a中元素的个数)。请对a[]中数据进行排序,并将排序函数作为友元函数或者放在类process中。
四、思考题 1、在类的组合中,构造函数的声明顺序是怎样的 2、友元关系可以传递么为什么说不要过多的使用友元关系 五、结果分析 1、定义点类,使用友元函数计算两点间的距离,体会友元函数的使用 #include<iostream> #include<cmath> using namespace std; class Trig{ public: Trig(int m,int n){ x1=m; y1=n; } Trig(double a,double 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 s2=sqrt(fabs s3=sqrt(fabs s4=*(s1+s2+s3); area1=sqrt(s4*(s4-s1)*(s4-s2)*(s4-s3)); p=*++; area2=sqrt(p***); 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; cout<<ss<<endl; return 0; } 2、在题目1的基础上,设计一个类Trig,给定三角形的三个定点的坐标(平面直角坐标系)要求:a) 用一个友元函数计算三角形面积。
b) 将友元函数存放在一个类中,并将该类修改为类Trig的友元类 注:三角形的面积公式为:已知三角形三边a,b,c,则
(海伦公式)(p=(a+b+c)/2)
S= #include<> #include<> class Cpoint { public: float a1,b1; Cpoint(float i,float j)//构造函数 { a1=i; b1=j; } }; class tria { private: double L1,L2,L3,s; public: double area; Cpoint A,B,C;//类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( L2=sqrt( L3=sqrt( s=((L1+L2+L3)/2); area=sqrt(s*(s-L1)*(s-L2)*(s-L3)); } friend void print(tria D); }; void print(tria D) { cout<<<<endl;//三角形面积的输出 } void main() { tria D,,,,,; print(D); } 3. 设计一个类Sample,它有两个私有数据成员a[]和n(a中元素的个数)。请对a[]中数据进行排序,并将排序函数作为友元函数或者放在类process中。
#include<iostream> using namespace std; class process; class Sample{ public: Sample(int n1) { n=n1; a=new int[n]; } friend process; void input(){ for(int i=0;i<n;i++) cin>>a[i]; cout<<endl;} private: int n,*a; }; class process{ public: void paixu(Sample &s) { for(int j=0;j<;j++) for(int i=0;i<;i++) if[i]>[i+1]) { int t; t=[i]; [i]=[i+1]; [i+1]=t; } cout<<“the sorted number :“<<endl; for(int i=0;i<;i++) cout<<[i]<<'\t'; cout<<endl; } }; int main(){ int n; cout<<“input n number :“<<endl; cin>>n; Sample a(n); (); process b; (a); return 0; } 六、指导教师评阅成绩 精心搜集整理,只为你的需要 内容仅供参考