![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Доброго времени суток!
Есть список объектов, каждый объект наделен структурой: Код:
Задача менеджера в том, чтобы собрать из N массивов, 1 большой массив и оттуда, случайно, выдернуть любой элемент. Как создать 1 большой массив? Варианты: Объявить buff:array of string у менеджера и туда загнать все массивы через CopyMemory. Другой вариант: Принять все массивы за 1 массив, не объединяя их в 1 массив(Сложить длинны всех массивов), выбрать случайное число, потом как-то узнать к какому массиву принадлежит это число. Мои мысли(вариант 2): Код:
Последний раз редактировалось Человек_Борща; 23.10.2012 в 22:50. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Общее к-во есть. Рандомно исходя из него взять индекс. Пробежаться в цикле по списку объектов и вычислить в каком из них находится строка соответствующая индексу. Взять строку
Вариант 2. Рандомно вычислить индекс объекта в списке. В нем рандомно вычислить индекс строки в массиве
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 23.10.2012 в 21:12. |
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Так?
Код:
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Похоже, но 2-ой вариант мне более симпатичен - циклов нет и все та же рандомность
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#6 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
_Собирать_ обязательно, или только выдернуть надо?
Если только выдернуть - можно просто запомнить индексы той записи где массив и самой строки в некий списочек, а потом по нему взять рандом. Пример: запись1: массив (а, б, в), запись2: массив(г, д), запись3: массив(е) собираем: 1(1,1) 2(1,2) 3(1,3) 4(2,1) 5(2,2) 6(3,1) - массив из 6 элементов, рандомим 6 и тянем по индексам нужную строку. А вообще, задачу не уловил... как-то абстрактно, да ещё терминология путаная. Замечу только ещё, что copymemory для строк не надо делать, они и так ведь указатели, просто сграбить все в кучу и всё (только не менять) |
![]() |
![]() |
![]() |
#7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
не?
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Аватар, я сбит с толку вашим ответом
![]() phomm , Stilet, Есть одномерные массивы в количестве N, и разных размеров X. Необходимо их собрать в 1 массив, и оттуда взять случайный элемент. Тут проблема: 1. массивов может быть очень много, или они будут иметь очень большой размер. Я думаю, что это имеет значение при сборки их в 1 массив, путем CopyMemory,memcpy или же через цикл: Код:
Придумал вариант, не собирать их действительно в массив, а образно сложить все размеры массивов в 1, выбрать оттуда число.. : Как определить к какому массиву принадлежит выбранное это число? Код, приведенный в посте 4-е - это вроде бы делает. |
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 23.10.2012 в 22:39. |
|
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Аватар,
Цитата:
![]() ![]() Перечитал ваш пост, думаете это тоже самое, что собрать все в кучу и вытащить X? Последний раз редактировалось Человек_Борща; 23.10.2012 в 22:58. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вставить диапазоны ячеек из разных файлов в один, но так чтобы они шли один ниже другого? | Squarded | Microsoft Office Excel | 4 | 24.07.2011 19:24 |
Множество, содержащее натуральные числа из первой сотни. Сформировать новое множество из простых чисел первого множества | Aimet | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 16.06.2011 20:50 |
Дано множество А, напечатать четные элементы, входящие в другое множество (Паскаль) | Марийка92 | Помощь студентам | 4 | 03.04.2011 17:38 |
Задано некоторое множество М и множество Т того же типа | dark999 | Помощь студентам | 5 | 01.04.2011 14:17 |
обьединить массивы в один | diliana | PHP | 5 | 16.07.2010 13:55 |