第六周实验报告4

  1. 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.}
    

  1.  

    感悟:仔细看程序,求两点之间的距离是重点!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值