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

составить алгоритм—программу для определения наименьшей окружности - C++

Восстановить пароль Регистрация
 
Basil2009
0 / 0 / 0
Регистрация: 08.04.2010
Сообщений: 11
08.04.2010, 14:49     составить алгоритм—программу для определения наименьшей окружности #1
Требуется составить алгоритм—программу для определения наименьшей окружности (центр и минимальный радиус), охватывающей не менее K из N заданных точек на плоскости.
Исходные точки на плоскости (х1 у1), (х2,у2),..., (хN, уN) задаются в текстовом файле. Результаты расчетов (координаты центра окружности, радиус ее и точки (xi,уi, попадающие в окружность) сохранить в текстовом файле. Решите эту же задачу, но искомая окружность должна включать все заданные точки (хi,уi). Подскажите пожалуйста алгоритм! Буду очень благодарен!

Добавлено через 47 минут
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "math.h"
 
#include "rand.h"
#include "func2d.h"
#include "Vector2d.h"
#include "Vector3d.h"
#include "ShevArray.h"
#include "WireModel.h"
#include "Mathem.h"
#include "opti2d.h"
 
typedef unsigned int nat;
 
//**************************** 23.08.2003 *********************************//
//
//          Минимальная охватывающая окружность
//
//**************************** 04.11.2009 *********************************//
 
Circle2d minCircle ( CArrRef<Vector2d> points )
{
    nat n = points.size();
    if ( n == 0 ) return Circle2d ();
    if ( n == 1 ) return Circle2d ( 0, points[0] );
    if ( n == 2 )
    {
        const Vector2d o = 0.5 * ( points[0] + points[1] );
        return Circle2d ( norm2 ( points[0] - o ), o );
    }
    const Vector2d ** p = new const Vector2d *[n];
    nat i;
    for ( i = 0; i < n; ++i ) p[i] = & points[i];
    PRand rand;
    for ( i = 0; i < n; ++i )
    {
        nat j = rand.number(n);
        if ( i != j )
        {
            const Vector2d * t = p[i];
            p[i] = p[j];
            p[j] = t;
        }
    }
    Vector2d o = 0.5 * ( *p[0] + *p[1] );
    double q = qmod ( *p[0] - o );
    for ( nat i1 = 2; i1 < n; ++i1 )
    {
        const Vector2d & v1 = *p[i1];
        if ( qmod ( v1 - o ) <= q ) continue;
        o = 0.5 * ( v1 + *p[0] );
        q = qmod ( v1 - o );
        for ( nat i2 = 1; i2 < i1; ++i2 )
        {
            const Vector2d & v2 = *p[i2];
            if ( qmod ( v2 - o ) <= q ) continue;
            o = 0.5 * ( v1 + v2 );
            q = qmod ( v1 - o );
            for ( nat i3 = 0; i3 < i2; ++i3 )
            {
                const Vector2d & v3 = *p[i3];
                if ( qmod ( v3 - o ) <= q ) continue;
                circlePPP ( v1, v2, v3, o, q );
            }
        }
    }
    delete[] p;
    return Circle2d ( sqrt ( q ), o );
Вот нашел какой-то код))ХД http://prografix.narod.ru/min_circle.html
посогите разобраться что и где, и куда ввод вывод вставлять))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2010, 14:49     составить алгоритм—программу для определения наименьшей окружности
Посмотрите здесь:

C++ алгоритм и программу для определения минимального количества первых символов, по которым можно различать слова с заданного текста.
C++ Разработать алгоритм и программу для определения кратчайшего слова в тексте
2. Составить программу для определения количества трехзначных чисел, кратных заданному числу C++
Разработать алгоритм и программу для определения процента гласных символов в тексте C++
C++ Разработать алгоритм и программу для определения процента слов в тексте, начинающиеся с заданного символа
Составить программу для определения типа треугольника C++
C++ Составить программу определения для каждого из данных массивов номера минимального элементов
C++ Разработать алгоритм и программу для определения процента гласных символов в тексте!

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru