• Твой профиль заполнен на 0%. Заполни за 1 минуту, чтобы тебя нашли единомышленники и работодатели. Заполнить →

Задача На Регулярное Множество

  • Автор темы Автор темы eremin-sanek
  • Дата начала Дата начала
E

eremin-sanek

Приветствую. У меня есть задача.
Множество точек на плоскости назовем регулярным, если вместе с каждой парой различных точек оно содержит также еще одну – третью вершину правильного треугольника с вершинами в этих точках. Определить, регулярно ли заданное множество точек.
так как действительные числа нельзя сравнивать, то сравниваю по модулю с заданой точностью, но для трегольника (2,1) (5,6) (8,1) - равносторонний программа выводит что треугольник не правильный и множество нерегулярно. Не подскажите в чем проблема?


C++:
#include "stdafx.h"

#include <iostream>
#include <math.h>
using namespace std;

int main ()
{
setlocale(LC_ALL,"");
float points [3][2];
float sides[3];
int i,j;
for(i=0;i<3;i++)
{
cout <<"введи x"<<i+1<<": ";
cin >> points[i][0];
cout <<"введи у"<<i+1<<": ";
cin >> points[i][1];
}

// ищу стороны треугольника
for(i=0;i<2;i++)
for(j=i+1;j<3;j++)
sides[i]=sqrt(pow(points[i][0]-points[j][0],2)+pow(points[i][1]-points[j][1],2));
//сравниваю стороны треугольника
if ((abs(sides[0]-sides[1])<0.01)&&(abs(sides[0]-sides[2])<0.01)&&(abs(sides[1]-sides[2])<0.01))
cout<<"треугольник правильный (равносторонний)";
else 
cout<<"треугольник неправильный";
return 0;
system("PAUSE");
}
 
Нарисуй в тетрадке)
Треугольник 2.1--5.6--8.1 не равносторонний
 
Нарисуй в тетрадке)
Треугольник 2.1--5.6--8.1 не равносторонний
да я рисовал вроде и углы проверял и по формулам считал, мне кажется ошибка где то когда ищу стоороны треугольника
 
C++:
//
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

struct Point
{
float x;
float y;
};

void main()
{
setlocale(LC_ALL, "");

int size;
cout << "Введите размерность:";
cin >> size;

Point *p_mas = new Point[size];

for (int i = 0; i < size; i++)
{
cout << "введи x" << i + 1 << ": ";
cin >> p_mas[i].x;
cout << "введи у" << i + 1 << ": ";
cin >> p_mas[i].y;
}

vector <float> sides;
for (int i = 0; i < size; i++)
{
for (int j = i + 1; j < size; j++)
sides.push_back(sqrt(pow(p_mas[i].x - p_mas[j].x, 2) + pow(p_mas[i].y - p_mas[j].y, 2)));
}
sort(sides.begin(), sides.end());// я пока работаю как с обычными числами,тебе придётся написать свой оператор сравнения.

for (int i = 0; i < sides.size(); i++)
cout << sides[i] << " ";
//проверку тоже сам напиши надо,чтобы были одинаковы тройки,четвёрки,пятёрки или т.д. чисел подряд
}
//
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab