04737 c++ 自学考试2019版 第四章课后练习 程序设计题 2

/*
*	04737 c++ 自学考试2019版 第四章课后练习
*	程序设计题 2
*	需求:为第二章习题设计中的二维坐标系下的类point,重载<< >> 
*/
//标准流 
#include<iostream>
//科学计算函数 
#include<cmath>
using namespace std;

class Point
{
	private:
		//横坐标 
		double x;
		//纵坐标 
		double y;
	public:
		//construtor
		Point(){};
		Point(double x1,double y1);
		//getter
		double getX();
		double getY();
		//setter
		void setX(double x1);
		void setY(double y1); 
		//计算给定点到0,0的距离
		double  distance(Point p);
		//计算给定两点之间的距离
		double  distanceB2Points(Point p,Point p2);
		//给定的三个点是否是三角形
		bool isTriangle(Point p,Point p2,Point p3);	
		//声明重载流插入 流提取 只能重载为友元
		friend ostream & operator<<(ostream & out,Point &p); 
		friend istream & operator>>(istream & in,Point &p);
};
//<<流插入定义
ostream & operator<<(ostream & out,Point &p)
{
	out<<"x="<<p.x<<endl;//输出x坐标
	out<<"y="<<p.y<<endl;//输出y坐标
	return out; 
}
//>>流提取定义
istream & operator>>(istream & in,Point &p)
{
	cout<<"请输入数字(x)"<<endl;
	if(!(in>>p.x)){
		cout<<"x输入错误,请重新输入"<<endl;
		in>>p.x;
	}
	cout<<"请输入数字(y)"<<endl;
	if(!(in>>p.y)){
		cout<<"y输入错误,请重新输入"<<endl;
		in>>p.y;
	}	
	return in;
}  

//construtor
Point::Point(double x1,double y1)
{
	x = x1;
	y = y1;
}
//getter
double Point::getX(){return x;}
double Point::getY(){return y;}
//setter
void Point::setX(double x1){x = x1;}
void Point::setY(double y1){y = y1;}
//计算给定点到0,0的距离 公式: 根号(x1-x2)平方+(y1-y2)平方 的绝对值 
double Point::distance(Point p)
{
	return abs(	sqrt(	pow(p.getX(),2) + pow(p.getY(),2)	)	);
}
//计算两点之间的距离
double Point::distanceB2Points(Point p,Point p2)
{
	return abs(	sqrt(	pow(p.getX()-p2.getX(),2) + pow(p.getY()-p2.getY(),2)	)	);
}
//给定的三个点是否是三角形 任意两边之和大于第三边即成立  或者判断是否在一条直线 
bool Point::isTriangle(Point p,Point p2,Point p3)
{
	//第一条边
	double a =   abs(	sqrt(	pow(p.getX()-p2.getX(),2) + pow(p.getY()-p2.getY(),2)	)	);
	//第二条边
	double b =   abs(	sqrt(	pow(p.getX()-p3.getX(),2) + pow(p.getY()-p3.getY(),2)	)	);
	//第三条边
	double c =   abs(	sqrt(	pow(p2.getX()-p3.getX(),2) + pow(p2.getY()-p3.getY(),2)	)	);
	cout<<"a="<<a<<endl;
	cout<<"b="<<b<<endl;
	cout<<"c="<<c<<endl;
	if( a+b > c && a+c > b &*& b+c > a)return true;
	return false;
}
//主函数
int main()
{
	Point p,p2,p3;
	cin>>p;
	cout<<p;
	
}


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页