Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/55: Рейтинг темы: голосов - 55, средняя оценка - 4.53
6 / 6 / 2
Регистрация: 08.04.2014
Сообщений: 248

Алгоритм Джарвиса

18.05.2014, 15:53. Показов 11264. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужен еще один алгоритм для курсовой работы.

Добавлено через 40 минут
вот нашел один,ток не пойму как вводить,пожалуйста помогите.
Вот код:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
 
using namespace std;
 
struct point
{
    int x,y;
    point(){}
    point(int X, int Y)
    {
        x = X;
        y = Y;
    }
};
bool operator != (const point &a, const point &b)
{
    return !(a.x == b.x && a.y == b.y);
}
double dist (const point &a, const point &b)
{
    return sqrt( 0.0 + (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
int n;
vector<point> mas;
vector<int> convex_hull;
double P;
void input()
{
    cin>>n;
    mas.resize(n);
    for (int i=0;i<n;i++)
        scanf("%d %d", &mas[i].x, &mas[i].y);
}
int OrientTriangl2(const point &p1,const point &p2, const point &p3)
{
    return p1.x * (p2.y - p3.y) + p2.x * (p3.y - p1.y) + p3.x * (p1.y - p2.y);
}
 
bool isInside(const point &p1, const point &p, const point &p2)
{
    return ( p1.x <= p.x && p.x <= p2.x &&
             p1.y <= p.y && p.y <= p2.y);
}
void ConvexHullJarvis(const vector<point> &mas, vector<int> &convex_hull)
{
    // находим самую левую из самых нижних
    int base = 0;
    for (int i=1;i<n;i++)
    {
        if (mas[i].y < mas[base].y)
            base = i;
        else
            if (mas[i].y == mas[base].y &&
                mas[i].x <  mas[base].x)
                base = i;
    }
    // эта точка точно входит в выпуклую оболочку
    convex_hull.push_back(base);
 
    int first = base;
    int cur = base;
    do
    {
        int next = (cur + 1) % n;
        for (int i=0;i<n;i++)
        {
            int sign = OrientTriangl2(mas[cur], mas[next], mas[i]);
            // точка mas[i] находится левее прямой ( mas[cur], mas[next] )
            if (sign < 0) // обход выпуклой оболочки против часовой стрелки
                next = i;
            // точка лежит на прямой, образованной точками  mas[cur], mas[next]
            else if (sign == 0)
            {
                // точка mas[i] находится дальше, чем mas[next] от точки mas[cur]
                if (isInside(mas[cur],mas[next],mas[i]))
                    next = i;
            }
        }
        cur = next;
        convex_hull.push_back(next);
    }
    while (cur != first);
}
void solve()
{
    ConvexHullJarvis(mas,convex_hull);
   
    for (size_t i=0;i<convex_hull.size()-1;i++)
        P += dist(mas[convex_hull[i]],mas[convex_hull[i+1]]);
}
void output()
{
    printf("%0.1f",P);
}
int main()
{
 
 
    input();
    solve();
    output();
 
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2014, 15:53
Ответы с готовыми решениями:

Алгоритм Джарвиса
Нужно найти точки принадлежащие выпуклой оболочке с помощью обхода Джарвиса. У меня в программе два цикла один находит точки от...

Реализация Алгоритма Грэхема и Джарвиса на С++
Ищу того, кто сделает за деньги с комментариями к каждой строке. В ЛС цену и за какое время.

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void lab () { int s1 = 0; int s2 =...

3
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.05.2014, 16:08
Что вводить? Данные в программу или саму программу?
0
6 / 6 / 2
Регистрация: 08.04.2014
Сообщений: 248
18.05.2014, 16:20  [ТС]
данные в программу

Добавлено через 46 секунд
если у вас есть рабочая программа буду признателен
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.05.2014, 16:35
Сначала вводишь n, затем координаты парами (х y) через пробел + enter, n раз.
Это курсовая? На контрольную больше похоже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2014, 16:35
Помогаю со студенческими работами здесь

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар)
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная головоломка). Определение. Перестано́вочные...

Алгоритм Джарвиса
Должен записать в массив к номера точек выпуклой оболочки, которые лежат в хаотичном порядке в массиве set Выводит бред - даже первую...

Алгоритм Джарвиса. Прорисовывается еще одна линия, получается треугольник и программа намертво виснет
Имеется программа, реализующая нахождение МВО методом Джарвиса с возможностью сгенерировать набор точек рандомно или выставить их вручную....

Определение выпуклой оболочки по методу Джарвиса
помогите мне написать программу плиз) желательно до четверга и обязательно на бейсике

Где можно посмотреть реализацию алгоритма Джарвиса или Грэхема
Здравствуйте. Кто-нить знает где можно посмотреть реализацию алгоритма Джарвиса или Грэхема на C#? Заранее благодарен!


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru