Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Определить расстояние от данной точки до ломаной - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу для нахожления точки пересечения этих функций http://www.cyberforum.ru/cpp-beginners/thread29066.html
Кто нить кто понимает с++ помогите с задачкой :) Дана парабола y=ax2+bx+с и прямая y=kx+m. Составить программу для нахожления точки пересечения этих функций, если тковая существует. В случае если...
C++ Строки немогу найти решения или нехватает литературы чтоб самому разобраться подскажите пожалуйста как решить эти задачи методом для начинающего или где можно взять литературу по строкам пожалуйста заранее благодарен 1.Дана строка. Заменить в строке все большые буквы... http://www.cyberforum.ru/cpp-beginners/thread29059.html
Поиск экстремумов функции C++
Вообще завал(( Была задана такая задача: Найти экстремумы функции y=2*sin(3*x) С чего вообще начать решать эту задачу? Есть ли какие-нибудь специальные функции(и если есть какие нужны...
Программа на С++Методо Гаусса C++
Реализован метод Гаусса.Предмет Численные методы. Может кто-то сталкивался.Но запустить не могу.Одно предупереждение об инициализации N.Среда Visual Studio 2008.Просьба помочь.Заранее спасибо. ....
C++ Протабулировать ф-ю на промежутке от а к b с шагом n согласно вложению http://www.cyberforum.ru/cpp-beginners/thread29008.html
Прошу помогите решить написать программу. 1. Протабулировать ф-ю на промежутке от а к b с шагом n согласно вложению. 2. Задано число N. Сложить программу поиска “совершенствованных” чисел меньших...
C++ Протабулировать функцию в промежутке между а и b с шагом n Помогите пожалуйста написать программу Вот задание 1. Протабулювати функцію на проміжку від а до b з кроком n згідно додатку. 2. Задано деяке число N. Скласти програму пошуку “досконалих” чисел... подробнее

Показать сообщение отдельно
ShadoW
7 / 7 / 0
Регистрация: 01.04.2009
Сообщений: 109

Определить расстояние от данной точки до ломаной - C++

07.04.2009, 16:51. Просмотров 1506. Ответов 3
Метки (Все метки)

Есть задача. Вот ее краткий пересказ.

На плосткости дана точка с координатами x и у. Дано n. На плоскости дано n точек, попарно соединенных прямыми, чтобы получилась замкнутая ломанная (первая со второй, вторая с третьей ... n-я с первой). Определить расстояние от данной точки до ломанной.

Есть решение, но понять, что в нем не так, не получается уже третий день.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
float sqrt(float);
int main()
{
    float p,a,b,c,x,y, min=4000000;
    float d[10001][2];
    int n, i;
    cin>>x>>y;
    cin>>n;
    for (i=0;i<n;i++)
        cin>>d[i][0]>>d[i][1];
    d[n][0]=d[0][0];
    d[n][1]=d[0][1];
 
    for (i=0;i<n;i++)
    {//находим стороны рассматриваемого треугольника
        a=sqrt((x-d[i][0])*(x-d[i][0]) + (y-d[i][1])*(y-d[i][1]));
        b=sqrt((x-d[i+1][0])*(x-d[i+1][0]) + (y-d[i+1][1])*(y-d[i+1][1]));
        c=sqrt( (d[i][0]-d[i+1][0])*(d[i][0]-d[i+1][0]) + (d[i][1]-d[i+1][1])*(d[i][1]-d[i+1][1]));
 
        if(a==0 || b==0)
        {
            cout<<"0";
            return 0;
        }
        else
        if(b*b>a*a+c*c)
        {
            if(a<min)
                min=a;
        }
        else
            if(a*a>b*b+c*c)
            {
                if(b<min)
                    min=b;
            }
            else
            {
                p=(a+b+c)/2;
                if(2*sqrt(p*(p-a)*(p-b)*(p-c))/c<min)
                    min=2*sqrt(p*(p-a)*(p-b)*(p-c));
            }
    }
    cout<<min;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru