/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
* 作 者: 晁阳
* 完成日期: 2012 年 4 月 1 日
* 版 本 号: t1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
大学要学习的东西很多,除了必要的专业知识之外,还有认识问题和解决问题的方法,自上而下,逐步求精。这次是真正的体会到啦,问题自己看了,不会,看别人的懂啦!这个过程可能没有通过自己做出开心、舒服,但是学会了解决问题的方法。现在再回头看看这个程序,看看自己的笔记本上面注释的满满的,回顾这种过程一种莫名的喜悦感,这个题也不过如此嘛····
#include<iostream> #include<cmath> using namespace std; class CPoint { private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(double xx=0,double yy=0); float getx(); float gety(); }; class CTriangle //声明构造函数,变量为指向CPOINT的指针 { public: CTriangle(CPoint &X,CPoint &Y,CPoint &Z,int i=0):A(X),B(Y),C(Z),i(i){} //给出三点的构造函数 赋值列表 void setTriangle(CPoint &X,CPoint &Y,CPoint &Z); float perimeter(void);//计算三角形的周长 float area(void);//计算并返回三角形的面积 void isRightTriangle(); //是否为直角三角形 void isIsoscelesTriangle(); //是否为等腰三角形 void Distance(CPoint &p,CPoint &q) ; // 两点之间的距离(一点是当前点,另一点为参数p) float CTriangle::Distance1(CPoint &p,CPoint &q); private: CPoint A,B,C; //三顶点 float bian[3]; //数组bian[3]有3个成员 int i; }; void main() { CPoint c1(1,2),c2(4,4),c3(5,6); //对三个点进行初始化 CTriangle m(c1,c2,c3); //三角形类 对象初始化 m.setTriangle(c1,c2,c3); m.Distance(c1,c2); //求距离 m.Distance(c1,c3); m.Distance(c2,c3); cout<<"三角形的周长为:"<<m.perimeter()<<endl;//计算三角形的周长 cout<<"三角形的面积为:"<<m.area()<<endl;//计算并返回三角形的面积 m.isRightTriangle(); //是否为直角三角形 m.isIsoscelesTriangle(); //是否为等腰三角形 system("PAUSE"); } float CPoint::getx() { return x; } float CPoint::gety() { return y; } CPoint::CPoint(double xx,double yy) { x=xx; y=yy; } void CTriangle::Distance(CPoint &p,CPoint &q) //形参 对象的引用 { bian[i]=sqrt((p.getx()-q.getx())*(p.getx()-q.getx())+(p.gety()-q.gety())*(p.gety()-q.gety())); ++i; } float CTriangle::Distance1(CPoint &p,CPoint &q) { bian[i]=(p.getx()-q.getx())*(p.getx()-q.getx())+(p.gety()-q.gety())*(p.gety()-q.gety()); ++i; return bian[i-1]; } float CTriangle::perimeter(void)//计算三角形的周长 { float s=0; --i; s=s+bian[i]+bian[i-1]+bian[i-2]; return s; } float CTriangle::area(void) //计算并返回三角形的面积 { float s,m; int i=0; m=(bian[i]+bian[i+1]+bian[i+2])/2; s=sqrt(m*(m-bian[i])*(m-bian[i+1])*(m-bian[i+2])); return s; } void CTriangle::isRightTriangle() //是否为直角三角形 { i=0; float m,n,c; m=Distance1(A,B); n=Distance1(A,C); c=Distance1(B,C); // m=bian[i]; // n=bian[i+1]; // c=bian[i+2]; if((m+n)==c||(m+c)==n||(c+n)==m) { cout<<"此三角形为直角三角形"<<endl; } else { cout<<"此三角形不是直角三角形"<<endl; } } void CTriangle::isIsoscelesTriangle() //是否为等腰三角形 { float m,n,c; i=0; m=bian[i]; n=bian[i+1]; c=bian[i+2]; if(m==n||m==c||n==c) { cout<<"此三角形为等腰三角形"<<endl; } else { cout<<"此三角形不是等腰三角形"<<endl; } } void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z) { A=X; B=Y; C=Z; }