第六周项目四 指针改正了 一个函数中的变量生命仅限于在那个函数里面,在那个函数外面不能直接取地址

#include<iostream>
#include<cmath>
using namespace std;
class CPoint
{
private:
    double x; // 横坐标
    double y; // 纵坐标
public:
    CPoint(double xx=0,double yy=0):x(xx),y(yy){};
    double Distance(CPoint p) const; // 两点之间的距离(一点是当前点,另一点为参数p)
    double Distance0() const; // 到原点的距离
    CPoint SymmetricAxis(char style)const;//style 取'x','y'和'o'分别表示按x 轴, y 轴, 原点对称
    void input(); //以x,y 形式输入坐标点
    void output(); //以(x,y) 形式输出坐标点
};

double CPoint::Distance(CPoint p) const{
    double l;//定义距离
    l=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
    return l;
}
double CPoint::Distance0() const{
    double l;//定义到原点的距离
    l=sqrt(x*x+y*y);
    return l;
}
CPoint CPoint::SymmetricAxis(char style) const
{
    CPoint p(this->x,this->y);
    if(style=='x') p.y=-y;
    else if(style=='y') p.x=-x;
    else if(style=='o')
    {
        p.x=-x;
        p.y=-y;
    }
	
    return p;
}
void CPoint::input()
{
    cout<<"请输入一个坐标,形如x,y形式:";
    char a;
    while(1)
    {
        cin>>x>>a>>y;
        if(a==',')
        {
            break;
        }
        else
        {
            cout<<"输入格式不争气,请重新输入。"<<endl;
        }
    }
    cout<<endl;
}
void CPoint::output()
{
    cout<<"("<<x<<","<<y<<")";
}
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; //三顶点
};
void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)
{
	A=X;
	B=Y;
	C=Z;
};
double CTriangle::perimeter(void)
{
	double l;
	l=A.Distance(B)+A.Distance(C)+B.Distance(C);
	return l;
}
;
double CTriangle::area(void)
{
	double s;
	double l;
	l=perimeter()/2;
	s=sqrt(l*(l-A.Distance(B))*(l-A.Distance(C))*(l-B.Distance(C)));
	return s;
};
bool CTriangle::isRightTriangle()
{
	double *a,*b,*c,d,a1,b1,c1;
	a1=A.Distance(B);
	a=&a1;
	b1=A.Distance(C);
		b=&b1;

	c1=B.Distance(C);
	c=&c1;
	if(*a<*b){
		d=*a;
		a=b;
		b=&d;
	}
	if(*a<*c){
		d=*a;
		a=c;
		c=&d;
	}
	if((*a)*(*a)==(*b)*(*b)+(*c)*(*c)){
		return true;
	}else
	{
		return false;
	}
	
}; //是否为直角三角形
bool CTriangle::isIsoscelesTriangle(){
	double a,b,c;
	a=A.Distance(B);
	b=A.Distance(C);
	c=B.Distance(C);
	if(a==b||b==c||a==c){
		return true;
	}
	else{
		return false;
	}
};
int main(){
	CPoint X(0,3),Y(4,0),Z(0,0);  
    CTriangle Tri1(X,Y,Z);  //定义三角形类的一个实例(对象)   
    cout<<"该三角形的周长为:"<<Tri1.perimeter()<<",面积为:"<<Tri1.area()<<endl;  
    cout<<"该三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;  
    cout<<"该三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;  
    return 0;  

}//

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值