第6周-项目4-三角形类
[cpp]
*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: object.cpp
.* 作者:杨绍宁
* 完成日期: 2013年 4 月 10 日
* 版本号: v1.0
* 输入描述:无
* 问题描述:设计三角形类和点类。
* 程序输出:输出周长,面积,判断是否是直角三角形,等腰三角形。
*/
#include <iostream>
#include<Cmath>
using namespace std;
class CPoint
{private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0);
void input();
double Distance(CPoint p) const; // 两点之间的距离(一点是当前点,另一点为参数p)
void output(); //以(x,y) 形式输出坐标点
};
CPoint::CPoint(double xx,double yy)
{
x=xx;
y=yy;
}
void CPoint::input()
{
char c;
cin>>x>>c>>y;
if(c!=',')
{
cout<<"输入错误,请重新输入";
exit(0);
}
}
double CPoint::Distance(CPoint p) const // 两点之间的距离(一点是当前点,另一点为参数p)
{
double s;
s=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
return s;
}
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; //三顶点
};
void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)//
{
A=X;
B=Y;
C=Z;
}
float CTriangle::perimeter(void)//计算三角形的周长
{
float a,b,c,l;
a=A.Distance(B);
b=B.Distance(C);
c=C.Distance(A);
l=a+b+c;
return l;
}
float CTriangle::area(void)//计算并返回三角形的面积
{
float a,b,c,p,s;
a=A.Distance(B);
b=B.Distance(C);
c=C.Distance(A);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
bool CTriangle::isRightTriangle()//是否为直角三角形
{
double a,b,c;
a=A.Distance(B);
b=B.Distance(C);
c=C.Distance(A);
bool prime=false;
if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
{
prime=true;
}
return prime;
}
bool CTriangle::isIsoscelesTriangle() //是否为等腰三角形
{
double a,b,c;
a=A.Distance(B);
b=B.Distance(C);
c=C.Distance(A);
bool prime=false;
if(a==b||a==c||b==c)
{
prime=true;
}
return prime;
}
int main()
{
CPoint x,y,z;
x.input();
y.input();
z.input();
CTriangle tri(x,y,z); //复制构造函数
cout<<"这个三角形的周长为:"<<tri.perimeter()<<",面积为:"<<tri.area()<<endl;
cout<<"这个三角形"<<(tri.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;
cout<<"这个三角形"<<(tri.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;
return 0;
}
/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: object.cpp
.* 作者:杨绍宁
* 完成日期: 2013年 4 月 10 日
* 版本号: v1.0
* 输入描述:无
* 问题描述:设计三角形类和点类。
* 程序输出:输出周长,面积,判断是否是直角三角形,等腰三角形。
*/
#include <iostream>
#include<Cmath>
using namespace std;
class CPoint
{private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0);
void input();
double Distance(CPoint p) const; // 两点之间的距离(一点是当前点,另一点为参数p)
void output(); //以(x,y) 形式输出坐标点
};
CPoint::CPoint(double xx,double yy)
{
x=xx;
y=yy;
}
void CPoint::input()
{
char c;
cin>>x>>c>>y;
if(c!=',')
{
cout<<"输入错误,请重新输入";
exit(0);
}
}
double CPoint::Distance(CPoint p) const // 两点之间的距离(一点是当前点,另一点为参数p)
{
double s;
s=sqrt((p.x-x)*(p.x-x
补充:软件开发 , C++ ,