E
eremin-sanek
Приветствую. У меня есть задача.
Множество точек на плоскости назовем регулярным, если вместе с каждой парой различных точек оно содержит также еще одну – третью вершину правильного треугольника с вершинами в этих точках. Определить, регулярно ли заданное множество точек.
так как действительные числа нельзя сравнивать, то сравниваю по модулю с заданой точностью, но для трегольника (2,1) (5,6) (8,1) - равносторонний программа выводит что треугольник не правильный и множество нерегулярно. Не подскажите в чем проблема?
Множество точек на плоскости назовем регулярным, если вместе с каждой парой различных точек оно содержит также еще одну – третью вершину правильного треугольника с вершинами в этих точках. Определить, регулярно ли заданное множество точек.
так как действительные числа нельзя сравнивать, то сравниваю по модулю с заданой точностью, но для трегольника (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");
}