1./* (程序头部注释开始) 2.* 程序的版权和版本声明部分 3.* Copyright (c) 2011, 烟台大学计算机学院学生 4.* All rights reserved. 5.* 文件名称: Student.cpp 6.* 作 者: 计114-4 刘程程 7.* 完成日期: 2012年 3 月 28日 8.* 版 本 号: V 1.0 9. 10.* 对任务及求解方法的描述部分 11.* 输入描述: 12.* 问题描述: 13.* 程序输出:按要求输出 14.* 程序头部的注释结束 15.*/ 1.#include <iostream> 2.#include <Cmath> 3.using namespace std; 4. 5.class CPoint 6.{ 7.private: 8. double x; // 横坐标 9. double y; // 纵坐标 10.public: 11. CPoint(double xx=0,double yy=0); 12. double distance(CPoint p) const; // 两点之间的距离 13. void input(); //以x,y 形式输入坐标点 14. void output(); //以(x,y) 形式输出坐标点 15.}; 16. 17.class CTriangle 18.{ 19.public: 20. CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z){} //给出三点的构造函数 21. void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);// 22. double perimeter(void);//计算三角形的周长 23. double area(void);//计算并返回三角形的面积 24. bool isRightTriangle(); //是否为直角三角形 25. bool isIsoscelesTriangle(); //是否为等腰三角形 26.private: 27. CPoint A,B,C; //三顶点 28.}; 29. 30.CPoint::CPoint(double xx,double yy) 31.{ 32. x=xx; 33. y=yy; 34.} 35. 36.// 输入坐标点 37.void CPoint::input() 38.{ 39. char ch; 40. cout<<"请输入坐标点(格式x,y ):"; 41. while(1) 42. { 43. cin>>x>>ch>>y; 44. if (ch==',') break; 45. cout<<"输入的数据格式不符合规范,请重新输入\n"; 46. } 47.} 48. 49.// 输出坐标点 50.void CPoint::output() 51.{ 52. cout<<"("<<x<<", "<<y<<")"<<endl; 53.} 54. 55.// 求两点之间的距离 56.double CPoint::distance(CPoint p) const 57.{ 58. double d; 59. d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); 60. return d; 61.} 62. 63.void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z) 64.{ 65. A=X; 66. B=Y; 67. C=Z; 68.} 69. 70.double CTriangle::perimeter(void) 71.{ 72. double a=B.distance(C),b=C.distance(A),c=A.distance(B); //求边长 73. return (a + b + c); 74.} 75. 76.double CTriangle::area(void) 77.{ 78. double a=B.distance(C),b=C.distance(A),c=A.distance(B); 79. double s = (a + b + c) / 2; 80. return sqrt(s * (s - a) * (s - b) * (s - c)); 81.} 82. 83.bool CTriangle::isRightTriangle()//是否为直角三角形 84.{ 85. double a=B.distance(C),b=C.distance(A),c=A.distance(B); 86. if((abs(a*a-b*b-c*c)<1e-7)||(abs(b*b-a*a-c*c)<1e-7)||(abs(c*c-b*b-a*a)<1e-7)) 87. return true; 88. else 89. return false; 90.} 91.bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形 92.{ 93. double a=B.distance(C),b=C.distance(A),c=A.distance(B); 94. if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7)) 95. return true; 96. else 97. return false; 98.} 99. 100.void main(void) 101.{ 102. CTriangle Tri1(CPoint(2,5),CPoint(5,2),CPoint(7,8)); //定义三角形类的一个实例(对象) 103. cout<<"该三角形的周长为:"<<Tri1.perimeter()<<",面积为:"<<Tri1.area()<<endl<<endl; 104. cout<<"该三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; 105. cout<<"该三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; 106. system("pause"); 107.}
感悟:仔细看程序,求两点之间的距离是重点!!