Experimento C ++ 03 (03) clase de combinación: clase de triángulo y clase de punto

Descripción del título
Definir una clase de punto Punto en un sistema de coordenadas plano, con miembros de datos enteros valores de coordenadas x, y. Las funciones miembro incluyen: (1) Constructor con valor predeterminado, el valor predeterminado es 0; (2) Copiar constructor; (3) Establecer el valor de las coordenadas x, y; (4) Tomar el valor de las coordenadas x, y, el parámetro es Dos enteros las referencias se utilizan para obtener los valores de las coordenadas xey. (5) Función de salida, utilizada para generar valores de coordenadas x, y. (6) Una función para encontrar la distancia entre dos puntos El parámetro es una referencia de objeto de la clase Point.
Defina un triángulo de tipo Triángulo en un sistema de coordenadas plano, y los miembros de datos son tres objetos Punto p1, p2, p3. Las funciones miembro incluyen: (1) Constructor con parámetros Los parámetros son enteros x1, y1, x2, y2, x3, y3, que son las coordenadas de los tres vértices del triángulo. (2) Constructor con parámetros, los parámetros son referencias a tres objetos de clase Point. (3) Halla el perímetro del triángulo. (4) Encuentra el área del triángulo. (5) Muestra las coordenadas, el perímetro y el área de los tres vértices del triángulo.
Definir una función ordinaria: determinar si las coordenadas de los tres vértices pueden formar un triángulo.
En main (), ingrese las coordenadas de tres puntos con el teclado para determinar si los tres puntos pueden formar un triángulo. De lo contrario, solicite volver a ingresar y volver a ingresar las coordenadas del punto; si es así, envíe las coordenadas de la tres vértices, perímetro y área.
Descripción de entrada
Las coordenadas de los tres puntos. Si no se puede formar el triángulo, vuelva a introducir las coordenadas de los tres puntos.
Descripción de salida Las coordenadas de los
tres vértices
, la circunferencia del triángulo y el área del triángulo.
Entrada ejemplo
0 0
1 1
2 2

0 0
5 6
3 0
Ejemplo de salida Las
coordenadas del vértice no son correctas y no pueden formar un triángulo. ¡Vuelva a ingresar las coordenadas!
Las coordenadas de los tres vértices del triángulo son:
(0,0) (5,6) (3,0) El
perímetro del triángulo es 17.1348 y el área es 9

#include<iostream>
#include<cmath>
using namespace std;
class Point
{
    
    
public:
	Point(int a=0,int b=0)
	{
    
    
		x=a;
		y=b;
	}
	Point(const Point &a)//拷贝构造函数
	{
    
    
		x=a.x;
		y=a.y;
	}
	void input()
	{
    
    
		cin>>x>>y;
	}
	int getx(int &x)
	{
    
    
		return x;
	}
	int gety(int &y)
	{
    
    
		return y;
	}
	void output()
	{
    
    
		cout<<"("<<x<<","<<y<<")";
	}
	double distance(Point &a)
	{
    
    
		double dx=x-a.x,dy=y-a.y;
		return sqrt(dx*dx+dy*dy);
	}
private:
	int x,y;
};
class Triangle
{
    
    
public:
	Triangle(int x1,int y1,int x2,int y2,int x3,int y3)
	{
    
    
		A=(x1,y1);
		B=(x2,y2);
		C=(x3,y3);
	}
	Triangle(Point &a,Point &b,Point &c)
	{
    
    
		A=a;
		B=b;
		C=c;
	}
	double Len()
	{
    
    
		return A.distance(B)+B.distance(C)+C.distance(A);
	}
	double Area()
	{
    
    
		double s=Len()/2.0;
		return sqrt(s*(s-A.distance(B))*(s-B.distance(C))*(s-C.distance(A)));
	}
	void output()
	{
    
    	
		cout<<endl<<"三角形周长为:"<<Len()<<",面积为:"<<Area();
	}
private:
	Point A,B,C;
};
bool ifTriangle(Point &p1,Point &p2,Point &p3)
{
    
    	
	here:
	if((p1.distance(p2)+p2.distance(p3)>p3.distance(p1))&& (p1.distance(p2) + p3.distance(p1) > p2.distance(p3)) && (p2.distance(p3) + p3.distance(p1) > p1.distance(p2)))
	{
    
    	
		cout << "三角形三个顶点坐标为:" << endl;
		p1.output();
		p2.output();
		p3.output();
		Triangle T(p1,p2,p3);
		T.output();
	}
	else
	{
    
    
		cout << "顶点坐标不正确,不能构成三角形!请重新输入坐标!" << endl;
		return false;
	}
	
}
int main()
{
    
    
	Point A,B,C;
	here:
	A.input();
	B.input();
	C.input();
	if (ifTriangle(A, B, C) == false)
	{
    
    
		goto here;
	}
	return 0;
}

Determina si es un triángulo

La suma de los dos lados es mayor que el tercer lado
o (la diferencia entre los dos lados es menor que el tercer lado)
pero se deben enumerar tres,
como
a + b> c && a + c> b && b + c> a

if((p1.distance(p2)+p2.distance(p3)>p3.distance(p1))&& (p1.distance(p2) + p3.distance(p1) > p2.distance(p3)) && (p2.distance(p3) + p3.distance(p1) > p1.distance(p2)))
	```

Supongo que te gusta

Origin blog.csdn.net/weixin_44179485/article/details/105754192
Recomendado
Clasificación