Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

Сводится всё к тому(щас буду цитировать методу, из которой задание), что нужно перебрать все возможные комбинации всех 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
Репутация: 868
По умолчанию

не знаю, что у вас за "метода", но число сочетаний из 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
Сообщений: 119
Репутация: 8
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


00:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru