第五周项目二三角形类
来源:互联网 发布:matlab中选择子矩阵 编辑:程序博客网 时间:2024/05/27 20:32
/* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:姜甜甜 * 完成日期:2015年 4 月 8日 * 版 本 号:v1.0 * * 问题描述:本项目设计一个三角形类,其数据成员不再是三角形三条边的边长,而是三角形的三个顶点。利用设计的三角形类,输入三角形的三个顶点,求出其面积、周长, 并判断其是否为直角三角形和等腰三角形。 提示:(1)这个问题需要用到两个类,顶点类参照项目1中的CPoint类; (2)三角形类参考下面CTriangle类的声明;(3)充分利用CPoint类中已有的代码实现;(4)关于三条边 的处理,可以增加三个私有属性,在初始化时求出来备用 */
#include <iostream>#include<cmath>using namespace std;class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0); double Distance1(CPoint p) const; //两点之间的距离(一点是当前点——想到this了吗?,另一点为p) void input(); //以x,y 形式输入坐标点 void output(); //以(x,y) 形式输出坐标点};CPoint::CPoint(double xx,double yy){ x=xx; y=yy;}double CPoint::Distance1(CPoint p) const{ double s; s=sqrt((this->x-p.x)*(this->x-p.x)+(this->y-p.y)*(this->y-p.y)); return s;}void CPoint::input(){ char c; while(1) { cin>>x>>c>>y; if (c==',') break; cout<<"输入的数据格式不符合规范,请重新输入\n"; }}void CPoint::output(){ cout<<"("<<x<<","<<y<<")"<<endl;}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; //三顶点 double a,b,c;//三边长};void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z){ a=X.Distance1(Y); b=X.Distance1(Z); c=Y.Distance1(Z); cout<<"三边长是:"<<a<<" "<<b<<" "<<c;}float CTriangle::perimeter(void){ return a+b+c;}float CTriangle::area(void){ float p; double s; p=(a+b+c)/2; if(p-a>0&&p-b>0&&p-c>0) s=(p*(p-a)*(p-b)*(p-c)); else cout<<"构不成三角形!"<<endl; return sqrt(s);}bool CTriangle::isRightTriangle(){ double max=a; if(b>max) max=b; if(c>max) max=c; if(((max==a)&&(abs(a*a-b*b-c*c)<1e-7))||((max==b)&&(abs(b*b-a*a-c*c)<1e-7))||((max==c)&&(abs(c*c-b*b-a*a)<1e-7))) //if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))错 return true; return false;}bool CTriangle::isIsoscelesTriangle(){ if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7)) //if(a==b||a==c||b==c)错 return true; return false;}int main(){ cout<<"输入三角形三个顶点的值:"<<'\n'; CPoint t1,t2,t3; t1.input(); t2.input(); t3.input(); CTriangle s(t1,t2,t3); s.setTriangle(t1,t2,t3); cout<<"周长是:"<<s.perimeter()<<endl; cout<<"面积是:"<<s.area()<<endl; if(s.isRightTriangle()) cout<<"是直角三角形."<<endl; else cout<<"不是直角三角形"<<endl; if(s.isIsoscelesTriangle()) cout<<"是等腰三角形"; else cout<<"不是等腰三角形"; return 0;}
笔会:数据类型,三角形的三边长构成三角形。double类型的比较
0 0
- 第五周项目二三角形类
- 第五周 项目一 设计三角形类
- 第五周项目1 设计三角形类
- 第五周项目一三角形类
- 第五周项目一三角形类1
- :第五周项目一三角形类12
- 第五周项目一:三角形类函数
- 第五周项目1三角形类雏形
- 第五周项目1 三角形类
- 第五周项目1.1-三角形雏类
- 第五周项目1.2-三角形类雏形
- 第五周项目1.3-三角形类雏形
- 第五周项目1.4-三角形类雏形
- 第五周项目1.5-三角形类雏形
- 第五周项目一-三角形类雏形
- 第五周项目 1-三角形类雏形
- 第五周项目1 三角形类雏形
- 第五周项目一-三角形类
- Hduoj1203【01背包】
- 将Texture Packer制作的.pvr.ccz和.plist文件还原为多个原图 -- 可以一下转化多个
- sdut 2608 Alice and Bob (二进制)
- Android Notification通知栏设计指南
- 目录文件处理函数之dir函数-将目录名转换为对象
- 第五周项目二三角形类
- 关于ARC机制
- httpclent 访问https 忽略host检查 和一些 认证过程
- makefile构建网站
- 手机卫士-12
- Android抽象布局——include、merge 、ViewStub
- 目录文件处理函数之clearstatcache函数--清除缓存
- 数据结构值约瑟夫环问题
- SGU 134 Centroid 树形DP