项目四--三角形类

/* 
* Copyright (c) 2011, 烟台大学计算机学院 
* All rights reserved. 
* 作    者:王静  
* 完成日期:2013  年 4  月 9  日 
* 版 本 号:v1.0 
* 输入描述:
* 问题描述:设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,
           并判断其是否为直角三角形和等腰三角形。
* 程序输出:
* 问题分析:
* 算法设计:略 
*/  


#include <iostream>
#include <cmath>
using namespace std;
class CPoint
{private:
  int x;  // 横坐标
  int y;  // 纵坐标
public:
  void input(int a=0,int b=0);  //以x,y 形式输入坐标点
  float Distance(CPoint p);
};
void CPoint::input(int a,int b)
{
    x=a;
    y=b;
}
float CPoint::Distance(CPoint p)
{
    float d;
    d=sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
    return d;
}
class CTriangle
{
public:
  CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z){} //给出三点的构造函数
  void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);//
  float perimeter(void);//计算三角形的周长
  float area(void);//计算并返回三角形的面积
  bool isTriangle();
  bool isRightTriangle(); //是否为直角三角形
  bool isIsoscelesTriangle(); //是否为等腰三角形
private:
  CPoint A,B,C; //三顶点
};
  void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)
  {
      A=X;B=Y;C=Z;
  }
  float CTriangle::perimeter(void)//计算三角形的周长
  {
      float aDis,bDis,cDis;
      float l;
      aDis=A.Distance(B);
      bDis=B.Distance(C);
      cDis=C.Distance(A);
      l=aDis+bDis+cDis;
      return l;
  }
  float CTriangle::area(void)//计算并返回三角形的面积
  {
      float aDis,bDis,cDis;
      float a,l;
      aDis=A.Distance(B);
      bDis=B.Distance(C);
      cDis=C.Distance(A);
      l=aDis+bDis+cDis;
      a=sqrt(l*(l-aDis)*(l-bDis)*(l-cDis));
      return a;
  }
  bool CTriangle::isTriangle()
  {
      float aDis,bDis,cDis;
      aDis=A.Distance(B);
      bDis=B.Distance(C);
      cDis=C.Distance(A);
      if(aDis<bDis+cDis&&bDis<aDis+cDis&&cDis<aDis+bDis&&
         aDis>bDis-cDis&&bDis>aDis-cDis&&cDis>aDis-bDis){
             cout<<"可构成三角形"<<endl;
          return true;
      }else{
          cout<<"不能构成三角形"<<endl;
      return false;}
  }
  bool CTriangle::isRightTriangle() //是否为直角三角形
  {
      float aDis2,bDis2,cDis2;
      aDis2=A.Distance(B)*A.Distance(B);
      bDis2=B.Distance(C)*B.Distance(C);
      cDis2=C.Distance(A)*C.Distance(A);
      if(aDis2==bDis2+cDis2||bDis2==aDis2+cDis2||cDis2==aDis2+bDis2){
           cout<<"是直角三角形"<<endl;
          return true;
      }else{
          cout<<"不是直角三角形"<<endl;
      return false;}
  }
bool CTriangle::isIsoscelesTriangle()//是否为等腰三角形
{
      float aDis,bDis,cDis;
      aDis=A.Distance(B);
      bDis=B.Distance(C);
      cDis=C.Distance(A);
      if(aDis==bDis||aDis==cDis||bDis==cDis){
          cout<<"是等腰三角形"<<endl;
        return true;
      }else{
          cout<<"不是等腰三角形"<<endl;
      return false;}
}
int main()
{
    CPoint X,Y,Z;
    X.input(2,4);
    Y.input(4,7);
    Z.input(5,9);


    CTriangle s=CTriangle(X,Y,Z);
    s.setTriangle(X,Y,Z);
    s.isTriangle();
    cout<<"三角形的周长为"<<s.perimeter()<<endl;//计算三角形的周长
    cout<<"三角形的面积为"<<s.area()<<endl;//计算并返回三角形的面积
    s.isRightTriangle(); //是否为直角三角形
    s.isIsoscelesTriangle(); //是否为等腰三角形
    return 0;
}


运行结果:
(贴图)


心得体会:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值