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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Выдает ошибки: поиск по шаблону, Бойер-Мур и Рабин-Карп. http://www.cyberforum.ru/cpp-beginners/thread311076.html
#include <stdio.h> #include <conio.h> #include <string.h> #include <limits.h> #define EOS '\0' #define REHASH( a, b, h ) ((( h - a * d ) << 1 ) + b ) using namespace std; int main(int argc, char *argv)
C++ Определить количество столбцов матрицы, содержащих хотя бы один нулевой элемент Помогите решить задачки. А то завтра экзамен, а контрольные надо сдать до экзамена. Задачи: 1. Дана целочисленная прямоугольная матрица. Определить: a. количество столбцов, содержащих хотя бы один нулевой элемент; b. номер строки, в которой находится самая длинная серия одинаковых элементов. 2. Дана матрица А размера n х m. Упорядочить строки матрицы в порядке возрастания их первых... http://www.cyberforum.ru/cpp-beginners/thread311068.html
Преобразование массивов C++
Помогите пожалуйста сделать задачку: Преобразовать одномерный массив(10 элементов) в массив массивов в каждом из которых числа будут идти по возрастанию, но в таком же порядке, как в исходном массиве то есть: если есть массив из 1 2 3 1 4 5 1 7 8 9 он должен выдать 1 2 3 1 4 5 1 7 8 9 есть наработки: #include "stdafx.h"
Решение японских кроссвордов C++
Столкнулся с багом в анализе линии, если в ней кроме неизвестных, есть еще пустые значения. #include <conio.h> #include <stdlib.h> #include <stdio.h> #include <windows.h> int Nat; int **Line; int *cell,*LenBlocks; int LenOf; bool *can_one,*can_zero;
C++ Сорировка Хоара как метод класса. http://www.cyberforum.ru/cpp-beginners/thread311027.html
Столкнулся с интересной задачей. Написать сортировку Хоара, как метод к контейнеру вектор. И сразу взялся за дело. Но #include "stdafx.h" #include <time.h> #include <stdio.h> #include <stdlib.h> template<class T>class cvector{ T* pv; unsigned size; public:
C++ подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20... подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20... эт надо очень срочно.... подробнее

Показать сообщение отдельно
Predvestnik
 Аватар для Predvestnik
7 / 6 / 2
Регистрация: 09.10.2010
Сообщений: 192
02.06.2011, 19:15     Алгоритм Джарвиса
Нужно найти точки принадлежащие выпуклой оболочке с помощью обхода Джарвиса. У меня в программе два цикла один находит точки от максимальной к минимальной а другой от минимальной до максимальной, так вот он почемуто не работает не могу разобраться в чём проблема

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Algoritm_of_Jarvis.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "math.h"
#include "conio.h"
#include "stdlib.h"
#include "iostream"
#define size 10
 
 
 
void main()
{
    struct Point {int x, y;};
    Point Points[size],line[100];
    /*struct lines {int p1, p2;};
    lines line[size];*/
    // index of first point
    int iTempPoint1;
    // index of second point
    int iTempPoint2;
    // temporary variables
    int i,n1,n2,k=0;
    
    //scanf("%i",size);
    for(i=1;i<size;i++)
    {
        Points[i].x=rand()%size;
        Points[i].y=rand()%size;
    }
    for(i=1;i<size;i++)
    {
        printf("%5i%5i\n",Points[i].x,Points[i].y);
    }
 
 
    if(size>2)
    {
        // clear max and min
        int MaxPoint=0;
        int MinPoint=0;
        // looking for max(y) and min(y)
        for(i=1;i<size;i++) {
            // minimum
            if(Points[MinPoint].y<Points[i].y) 
                MinPoint=i;
            else    if(Points[MinPoint].y==Points[i].y)
            {
                if(Points[MinPoint].x>Points[i].x)
                    MinPoint=i;
            }
            // maximum
            if(Points[MaxPoint].y>Points[i].y) 
                MaxPoint=i;
            else    if(Points[MaxPoint].y==Points[i].y)
            {
                if(Points[MaxPoint].x<Points[i].x)
                    MaxPoint=i;
            }
        }
        printf("\n\n");
        printf("%3i%3i%\n",MaxPoint,MinPoint);
        //printf("%i%i%\n",MaxPoint,MinPoint);
 
        // from minimun to maximum
        iTempPoint1=MinPoint;
        
        while(iTempPoint1!=MaxPoint) {
            // init point 2
            if(iTempPoint1>0) 
                iTempPoint2=0;
            else
                iTempPoint2=1;
            // look for second point
            for(i=0;i<size;i++) {
                if(i!=iTempPoint1) {
                    n1 = (Points[iTempPoint2].x-Points[iTempPoint1].x)*(Points[i].y-Points[iTempPoint1].y);
                    n2 = (Points[i].x-Points[iTempPoint1].x)*(Points[iTempPoint2].y-Points[iTempPoint1].y);
                    if(n1>n2)
                        iTempPoint2=i;//printf("%3i",iTempPoint2);}
                
                }
 
            }
            k++;
            line[k]=Points[iTempPoint2];
            printf("%5i%5i\n",line[k].x,line[k].y);
            // put it in storage
 
            // set p1 to p2
            iTempPoint1=iTempPoint2;
        }
        
        // from maximum to minimun
        iTempPoint1=MaxPoint;
        while(iTempPoint1!=MinPoint) {
            // init point 2
            if(iTempPoint1>0) 
                iTempPoint2=0;
            else
                iTempPoint2=1;
            //  look for second point
            for(i=0;i<size;i++) {
                if(i!=iTempPoint1) {
                    n1 = (Points[iTempPoint2].x-Points[iTempPoint1].x)*(Points[i].y-Points[iTempPoint1].y);
                    n2 = (Points[i].x-Points[iTempPoint1].x)*(Points[iTempPoint2].y-Points[iTempPoint1].y);
                    if(n1>n2)
                        iTempPoint2=i;
                }
 
            }
            
           k++;
            line[k]=Points[iTempPoint2];
            printf("%5i%5i\n",line[k].x,line[k].y);
            // set p1 to p2
            iTempPoint1=iTempPoint2;
        }
    }
 
    getch();
}
Добавлено через 24 минуты
извиняюсь, я наверно что-то напорол, сейчас всё нормально работает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru