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

Тема в разделе "C/C++/C#", создана пользователем eremin-sanek, 3 дек 2014.

  1. eremin-sanek

    eremin-sanek New Member

    Регистрация:
    31 окт 2014
    Сообщения:
    2
    Симпатии:
    0
    Приветствую. У меня есть задача.
    Множество точек на плоскости назовем регулярным, если вместе с каждой парой различных точек оно содержит также еще одну – третью вершину правильного треугольника с вершинами в этих точках. Определить, регулярно ли заданное множество точек.
    так как действительные числа нельзя сравнивать, то сравниваю по модулю с заданой точностью, но для трегольника (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. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Нарисуй в тетрадке)
    Треугольник 2.1--5.6--8.1 не равносторонний
     
  3. eremin-sanek

    eremin-sanek New Member

    Регистрация:
    31 окт 2014
    Сообщения:
    2
    Симпатии:
    0
    да я рисовал вроде и углы проверял и по формулам считал, мне кажется ошибка где то когда ищу стоороны треугольника
     
  4. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Код (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] << " ";
    //проверку тоже сам напиши надо,чтобы были одинаковы тройки,четвёрки,пятёрки или т.д. чисел подряд
    }
    //
     
Загрузка...
Похожие Темы - Задача На Регулярное
  1. elzim
    Ответов:
    0
    Просмотров:
    929
  2. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.117
  3. MonteCristo
    Ответов:
    1
    Просмотров:
    851
  4. bort
    Ответов:
    1
    Просмотров:
    1.179
  5. Аделина
    Ответов:
    1
    Просмотров:
    974

Поделиться этой страницей