Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2011, 21:56   #1
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
Восклицание Все возможные комбинации массива и непонятная процедура.

Хотя бы помогите разобраться в представленной ниже процедуре. Скажите, действительно ли она бред.

Задача по сути проста: есть шесть точек. Найти среди них нечто удовлетворяющее определению треугольника, ромба и выпуклого четырёхугольника. Ну, скажем, будем искать выпуклый четырёхугольник.

Сводится всё к тому(щас буду цитировать методу, из которой задание), что нужно перебрать все возможные комбинации всех 6-ти точек и проверить в каждой комбинации четыре первые точки на принадлежность их вершинам одного четырёхугольника.(Всего комбинаций, если память меня не подводит, будет 720. Если же перебирать 6 точек но по 4(4 позиции для шести элементов), то комбинаций будет уже всего то 360. Но нет, ладно, следуем методе)


Далее предлагается такой код процедуры возвращения очередной перестановки одномерного массива:
Код:
procedure comb(var p:array of integer;var g:boolean);
var j,m,n:integer;
begin
n:=high(p)+1;
Repeat n:=n-1;
m:=p[0];
for j:=1 to n do p[j-1]:=p[j];
p[n]:=m;
g:=m<=n; until g or (n=1);
end;
Что в нём значит строчка "g:=m<=n;"? С хера, извините, ли нам сравнивать элемент массива с числом элементов. Или я не правильно понял код?

Далее, как я понял, нам предлагают до посинения вертеть всё это в цикле вида:
Код:
...
g:=true;
While g do
begin
...//тут идёт проверка на то, моно ли через первые 4 точки построить вып.четырёхугольник
combo(p,g);
end;
...
Блин, ну ведь не реально таким образом проверить все комбинации точек!

И да, натолкните тогда на алгоритм для нахождения всех комбинаций(желательно на С++).

Последний раз редактировалось Ksardas13; 21.05.2011 в 22:03.
Ksardas13 вне форума Ответить с цитированием
Старый 22.05.2011, 00:19   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

не знаю, что у вас за "метода", но число сочетаний из 6 по 4 всегда было 15:

Цитата:
6! / (4! * (6 - 4)!) = 720 / (24 * 2) = 15
это легко проверить, если выписать все возможные сочетания вершин:

PHP код:
1234
1235
1236
1245
1246
1256
1345
1346
1356
1456
2345
2346
2356
2456
3456 
в принципе, для фигур, у которых более 3-х вершин, порядок вершин важен, но, имхо, перебором порядка как раз логичнее заняться в той процедуре, которая будет проверять, можно ли из переданного ей набора вершин соорудить искомую фигуру. Совсем не обязательно бездумно перебирать все 360 возможных размещений.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 22.05.2011, 02:04   #3
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

Мам моя О_о , надо больше спать. Не подумал что расположение элементов по позициям не важно(выкинул факториал четвёрки из знаменателя) =D . Зациклился на полном переборе точек(в обще, помешало то, что в дальнейшем хотел подобную процедуру присобачить под переборщик паролей... если вдруг приспичит). Спасибо!
Уполз думать своим убогим мозгом дальше.))
Ksardas13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможные комбинации из чисел Serg1k Microsoft Office Excel 17 17.12.2021 13:27
Даны цифры от 1 до 38 нужно составить все возможные комбинации из 6 чисел без повторений. gector Фриланс 14 01.04.2013 20:20
Возможные комбинации firephenix Помощь студентам 1 01.04.2011 02:19
все возможные числа nick_5714 Помощь студентам 7 16.02.2011 15:41
Все возможные слагаемые anGeee Паскаль, Turbo Pascal, PascalABC.NET 4 04.12.2008 20:22