/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 作 者:王颖 * 完成日期:2014 年 4 月 4 日 * 版 本 号:v1.0 * 输入描述: 无 * 问题描述:多文件组织项目三 * 程序输出:略 * 问题分析:略 * 算法设计:略 */ #include <iostream> #include<cmath> #include "CPoint.h" #include "CTriangle.h" using namespace std; CPoint::CPoint(double xx,double yy) { x=xx; y=yy; } double CPoint::distance1(CPoint p) { double d; d=sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); return d; } int main() { CPoint X(4,5),Y(1,3),Z(6,8); CTriangle s(X,Y,Z); cout<<"三角形的周长为:"<<s.perimeter()<<"三角形的面积为:"<<s.area()<<endl; cout<<"三角形"<<(s.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; cout<<"三角形"<<(s.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; return 0; }CPoint.h
#ifndef CPOINT_H_INCLUDED #define CPOINT_H_INCLUDED class CPoint { private: double x; // ºá×ø±ê double y; // ×Ý×ø±ê public: CPoint(double xx=0,double yy=0); double distance1(CPoint p); }; #endif // CPOINT_H_INCLUDED
CTriangle.h
#ifndef CTRIANGLE_H_INCLUDED #define CTRIANGLE_H_INCLUDED #include "CPoint.h" 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 isRightTriangle(); //是否为直角三角形 bool isIsoscelesTriangle(); //是否为等腰三角形 private: CPoint A,B,C; //三顶点 }; #endif // CTRIANGLE_H_INCLUDED
#include <iostream> #include<cmath> #include "CTriangle.h" using namespace std; void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z) { A=X; B=Y; C=Z; } float CTriangle::perimeter(void) { CPoint t; double d; d=B.distance1(A)+A.distance1(C)+C.distance1(B); return d; } float CTriangle::area(void) { CPoint q; double p,s,a=0,b=0,c=0; a=C.distance1(B); b=A.distance1(C); c=B.distance1(A); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; } bool CTriangle::isRightTriangle() //是否为直角三角形 { CPoint t; double a=0,b=0,c=0; a=C.distance1(B); b=A.distance1(C); c=B.distance1(A); bool flag=false; if(((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||((b*b+c*c)==a*a)) { flag=true; } return flag; } bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形 { CPoint t; bool flag=false; if(B.distance1(A)==A.distance1(C)||A.distance1(B)==B.distance1(C)||C.distance1(A)==C.distance1(B)) flag=true; return flag; }