第五周项目3 用文件组织多个类的程序

来源:互联网 发布:日本网络电视直播apk 编辑:程序博客网 时间:2024/06/18 06:13
/**Copyright (c)2015,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:score.cpp*作    者:惠睿*完成日期:2015年4月8日*版 本 号:v1.0**问题描述:设计一个三角形类,数据成员为三角形的三个顶点,求出其面积,周长,并判断其是否为直角三角形,和等腰三角形。*程序输入:输入三角形的三个顶点。*程序输出:输出三角形的面积,周长,是否为等腰三角形和直角三角形。*/#include <iostream>#include "CPoint.h"using namespace std;int main(){    double Area,Perimeter;    CPoint p1,p2,p3;    p1.input();    p2.input();    p3.input();    CTriangle c(p1,p2,p3);    Perimeter=c.perimeter();    cout<<"三角形的周长为:"<<Perimeter<<endl;    Area=c.area();    cout<<"三角形的面积为:"<<Area<<endl;    if(c.isRightTriangle())        cout<<"该三角形是直角三角形!"<<endl;    else        cout<<"该三角形不是直角三角形!"<<endl;    if(c.isIsoscelesTriangle())        cout<<"该三角形是等腰三角形!"<<endl;    else        cout<<"该三角形不是等腰三角形!"<<endl;    return 0;}#ifndef CPOINT_H_INCLUDED#define CPOINT_H_INCLUDEDclass CPoint{private:    double x;    double y;public:    CPoint(double xx=0,double yy=0);    double distance(CPoint p) const;    void input();};class CTriangle{public:    CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z) {}    void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);    double perimeter(void);    double area(void);    bool isRightTriangle();    bool isIsoscelesTriangle();private:    CPoint A,B,C;};#endif // CPOINT_H_INCLUDED#include <iostream>#include <cmath>#include "CPoint.h"using namespace std;CPoint::CPoint(double xx,double yy){    x=xx;    y=yy;}double CPoint::distance(CPoint p) const{    double dx,dy,d;    dx=p.x-x;    dy=p.y-y;    d=sqrt(dx*dx+dy*dy);    return d;}void CPoint::input(){    char a;    cout<<"请输入三角形的三个顶点格式(x,y):";    cin>>x>>a>>y;    if(a!=',')        cout<<"格式错误,请重新输入!"<<endl;}#include "CPoint.h"#include <cmath>void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){    A=X;    B=Y;    C=Z;}double CTriangle::perimeter(void){    double a=B.distance(C),b=A.distance(C),c=A.distance(B);    return a+b+c;}double CTriangle::area(void){    double a=B.distance(C),b=A.distance(C),c=A.distance(B),s=(a+b+c)/2;    return sqrt(s*(s-a)*(s-b)*(s-c));}bool CTriangle::isRightTriangle(){    double a=B.distance(C),b=A.distance(C),c=A.distance(B);    bool RightTriangle=false;    if((a*a+c*c==b*b) || (b*b+c*c==a*a) || (a*a+b*b==c*c))        RightTriangle=true;    else        ;    return RightTriangle;}bool CTriangle::isIsoscelesTriangle(){    double a=B.distance(C),b=A.distance(C),c=A.distance(B);    if(a==b || a==c || b==c)        return true;    else        return false;}


运行结果:

 

0 0
原创粉丝点击