[cpp] view plaincopy
01./*(文件注释头部开始)
02.*程序的版权和版本声明部分
03.*Copyright (c) 2011,烟台大学计算机学院学生
04.*All rights reserved.
05.*文件名称:youyuan.cpp
06.*作 者:苗向前
07.*完成日期:2012 年 4 月 5 号
08.*版本号:
09.* 对任务及求解方法的描述部分
10.* 输入描术:输入坐标点
11.* 问题描述:你需要完成的任务是,利用成员函数、友元函数和一般函数,实现三个版本的求两点间距离的函数,
12.* 并设计main()函数完成测试。此任务和上例的区别在于“距离是一个点和另外一个点的距离”,参数个数上有体现。
13.* 程序输出:输出两点之间距离、到原点距离、关于坐标轴和原点的对称点等
14.* 程序头部的注释结束
15.*/
16.#include<iostream>
17.#include<cmath>
18.
19.using namespace std;
20.
21.enum SymmetricStyle { axisx,axisy,point};//分别表示按x轴, y轴, 原点对称
22.
23.class CPoint
24.{
25.private:
26.
27. double x; // 横坐标
28.
29. double y; // 纵坐标
30.
31.public:
32.
33. CPoint(double xx = 0,double yy = 0);
34.
35. double Distance1(CPoint p) ; // 两点之间的距离(一点是当前点,另一点为参数p)
36.
37. friend double Distance2(CPoint &);
38.
39. double getx(){return x;}
40.
41. double gety(){return y;}
42.
43. void input();
44.};
45.double Distance3(CPoint &);
46.CPoint::CPoint(double xx,double yy):x(xx),y(yy){}
47.
48.// 两点之间的距离(一点是当前点,另一点为参数p)
49.// 成员函数的实现,Distance前加Cpoint::,以x,y的形式直接访问私有数据成员
50.double CPoint::Distance1(CPoint p)
51.{
52. return(sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y)));
53.}
54.//友元函数的实现,
55.double Distance2(CPoint &p)
56.{
57. CPoint p1;
58.
59. cout << "请输入一个点" ;
60.
61. p1.input();
62.
63. return(sqrt((p1.x - p.x) * (p1.x - p.x) + (p1.y - p.y) * (p1.y - p.y)));
64.}
65.//普通函数的实现
66.double Distance3(CPoint &p)
67.{
68. CPoint p1;
69.
70. cout << "请输入一个点" ;
71.
72. p1.input();
73.
74. return(sqrt((p1.getx() - p.getx()) * (p1.getx() - p.getx()) + (p1.gety() - p.gety()) * (p1.gety() - p.gety())));
75.}
76.
77.
78. //以x,y 形式输入坐标点
79.void CPoint::input()
80.{
81. char c;
82.
83. cout << "格式:(x,y):" ;
84.
85. cin >> x >> c >> y;
86.
87. while(1)
88. {
89. if(c != ',')
90. {
91. cout << "格式出错请重输!" << endl;
92. }
93. else break;
94. }
95. return ;
96.}
97.
98.void main()
99.{
100. CPoint p1,p2;
101.
102. cout << "输入第一个点p1:" ;
103. p1.input();
104.
105. cout << "输入第二个点p2:";
106. p2.input();
107.
108. cout << "这两点之间的距离是:" << p1.Distance1(p2) << endl;//调用成员函数
109.
110. cout << "这两点之间的距离是:" << Distance2(p1) << endl;//友元函数的调用
111.
112. cout << "这两点之间的距离是:" << Distance3(p1) << endl;//普通函数的调用
113.
114. system("pause");
115.}
运行结果:
上机感言:
friend与吃面。。。自己体会