C/C++

Программа на языке С++

С++ Помогите пожалуйста! Известны координаты вершин двух треугольников.Записать и реализовать алгоритм определения их равенства.Для вычисления длин сторон треугольника определить процедуру.
#include <algorithm>
#include <iostream>
#include <cmath>
#include <array>
using namespace std;
struct Point {
double x;
double y;
Point() : x(0), y(0) {}
Point(const double x, const double y) : x(x), y(y) {}
double length(const Point& p)const {
return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2));
}
};
Point coords(const char* name) {
Point p;
cout << name << "x: ";
cin >> p.x;
cout << name << "y: ";
cin >> p.y;
return p;
}
class Triangle {
public:
Triangle() = default;
Triangle(const Point& a, const Point& b, const Point& c) : a(a), b(b), c(c) {}
bool equal(const Triangle& t) {
array<double, 3> ta{ a.length(b), b.length(c), c.length(a) };
sort(ta.begin(), ta.end());
array<double, 3> tb{ t.a.length(t.b), t.b.length(t.c), t.c.length(t.a) };
sort(tb.begin(), tb.end());
const auto eps = 1e-12;
return fabs(ta[0] - ta[0]) < eps && fabs(ta[1] - tb[1]) < eps && fabs(ta[2] - tb[2]) < eps;
}
private:
Point a;
Point b;
Point c;
};
int main() {
puts("Введите координаты первого треугольника");
auto pa1 = coords("A");
auto pb1 = coords("B");
auto pc1 = coords("C");
Triangle ta{ pa1, pb1, pc1 };
puts("Введите координаты второго треугольника");
auto pa2 = coords("A");
auto pb2 = coords("B");
auto pc2 = coords("C");
Triangle tb{ pa2, pb2, pc2 };
puts(ta.equal(tb) ? "Равны" : "Не равны");
}
OZ
Oleg Zemskov
59 219
Лучший ответ
#include <iostream>
#include <set>
using namespace std;
multiset <double> enter(string message)
{
multiset <double> tri;
double x[3], y[3], p = 0, temp;
cout << message << endl;
for (auto i = 0; i < 3; i++)
{
cin >> x[i] >> y[i];
}
for (auto i = 0; i < 3; i++)
{
temp = sqrt(pow((x[i]-x[(i + 1) % 3]),2) + pow((y[i]-y[(i + 1) % 3]),2));
tri.insert(temp);
p += temp;
}
for (auto i : tri) if (i == p / 2) { cout << "This is not triangle"; exit(1); }
return tri;
}
int main() {
if (enter("Enter first triangle") == enter("Enter other triangle")) cout << "Ravni"; else
cout << "Ne ravni";
}
тут наверное больше урок по геометрии нужен а не по С++ ибо алгоритм определения до безобразия прост if 1=1 а что именно вы хотели непонятно
Ербол Танбай
Ербол Танбай
5 131