• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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");
}
 
W

Whatka

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] << " ";
//проверку тоже сам напиши надо,чтобы были одинаковы тройки,четвёрки,пятёрки или т.д. чисел подряд
}
//
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!