* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
* 作 者: 张艳明
* 完成日期: 2012 年 03 月 28 日
* 版 本 号: V1.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
- {
- 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];
- int i;
- };
- void main()
- {
- CPoint c1(0,0),c2(0,1),c3(1,0);
- 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;
- }
上机感言:周一上完机后老师的讲解真的很重要!希望同学们都去听听,很多问题的出现和讨论都是课上无法讲细的!大家在一起才是群策群力。
本文介绍了一个用于计算三角形属性的C++类的设计与实现,包括面积、周长的计算,以及判断是否为直角三角形和等腰三角形的功能。

被折叠的 条评论
为什么被折叠?



