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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2011, 10:37   #1
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию Алгоритм перемешивания данных о координатах 9 прямоугольников, которые находятся в структуре

Мне нужно сделать так, что бы данные о координатах 9 прямоугольников, которые находятся в структуре, перемешались случайным образом, т.е. перемешиваются прямоугольники в структуре. Подскажите, как это сделать с помощью функции random или существуют другие методы?

Последний раз редактировалось Mehanizator; 11.08.2011 в 11:35. Причина: тема немного не соответствует правилам
Mehanizator вне форума Ответить с цитированием
Старый 11.08.2011, 11:01   #2
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

пусть есть N прямоугольников.
задаешь случайное число от 1 до N. добавляешь его(прямоугольник с данным номером) в новый массив, из исходного массива удаляешь данный прямоугольник, далее генерируешь число от 1 до (N-1). аналогично добавляешь его в новый массив-структуру и удаляешь из исходного.
и так организуешь цикл пока исходный массив не будет пуст.

структуру проще организовать как массив объектов или записей
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###

Последний раз редактировалось MadReason; 11.08.2011 в 11:03.
MadReason вне форума Ответить с цитированием
Старый 11.08.2011, 11:12   #3
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

получается, что у нас всегда они будут одинаково перемешаны, т.е. при повторном запуске, они перемешаются таким же образом.
Mehanizator вне форума Ответить с цитированием
Старый 11.08.2011, 11:16   #4
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

почему же? как я понял среда eclipse, язык си-образный. должна быть там функция инициализации генератора случайных чисел, поэтому каждый раз последовательность номеров, выбираемых из структуры, будет разной.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 11.08.2011, 11:17   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1)
Цитата:
получается, что у нас всегда они будут одинаково перемешаны, т.е. при повторном запуске, они перемешаются таким же образом.
не получается.
Генератор случайных чисел нужно инициировать при запуске.
(в Pascal/Delphi это метод Randomize, например)
на то это и СЛУЧАЙНЫЕ числа, чтобы каждый раз они выдавали различную последовательность!

2) код у Вас отвратительный.
Вы хоть быть в константный массив вытащили координаты..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.08.2011, 11:29   #6
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Чтобы они перемешивались каждый раз в случайном порядке используйте
Код:
randomize(time);
или
Код:
srand(time(0));
В разных пакетах по-разному.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 11.08.2011, 11:37   #7
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

согласен, код корявый немного, но как еще задать координаты 9 прямоугольников..и у нас же по сути ничего не изменится, если мы перенесем в константный массив.
Mehanizator вне форума Ответить с цитированием
Старый 11.08.2011, 11:39   #8
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

У меня была вот какая идея...у меня координаты будут меняться только по y. Каждой линии можно присвоить порядковые номера. Выбираем 1ый номер линии которую хотим заменить, а 2ой номер линии, на которую заменяем. И координаты по y первой полоски заменяются на координаты 2ой полоски. Возможен ли такой вариант?и как будет выглядеть функция замены?
Mehanizator вне форума Ответить с цитированием
Старый 11.08.2011, 12:02   #9
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

уточни что за "линии"? если это линии флага, как было сказано в прошлой теме, то я вообще не понимаю зачем тебе какие-то прямоугольники и их перемешивание. рисуй обычный трехполосный флаг, а меняй только цвета заливки каждого прямоугольника.
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 11.08.2011, 13:25   #10
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

Перемешивание нужно потому, что я делаю игру, где игрок должен собрать флаг нужной страны. А весь флаг мы разбиваем на 9 полосок, которые должны быть перемешаны случайным образом
Mehanizator вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отобразить в таблице (на форме) все файлы которые находятся в определённой папке? mojohead Помощь студентам 10 05.04.2011 10:48
Как получить иконки которые находятся в трее?? Paul Hindenburg Общие вопросы Delphi 5 21.10.2010 19:46
Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–1, 16] Mirel Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2010 10:58
Как скопировать диапазоны которые находятся на равном растояние друг от друга... Алексей11111 Microsoft Office Excel 12 15.11.2009 02:34
Не правильно считает сумму чисел, которые находятся в файле. TheWanderer Общие вопросы C/C++ 6 17.04.2009 18:43