![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 04.02.2017
Сообщений: 8
|
![]()
Подскажите красивый алгоритм (для лабы)
Дан диапазон стринговых переменных 100 штук Код:
Код:
b1,b2...b10: Boolean; т.е. если b1=True То в диапазоне s001 - s010 можно выбирать Задача: осуществить случайный выбор, (Randomize) одного значения из всего доступного диапазона (обходя запрещенные участки) т.е. если юзер указал (там чекеты на форме), например Код:
то функция Randomize должна выбирать одну переменную из списка: [s001 - s020,s031 - s050,s061 - s070,s081 - s100] т.е. возвращать значение Num:Integer = номер случайной переменной: Num := Random(что-то хитрое) ... Мной написан супер-пупер алгоритм, на 250 строк кода делающий все это, но препод заржал как коннь, сказал "это решается в несколько строк - хошь "трояк" - приму твое... а я трояк не хочу") Мне хотя бы просто указать нужный путь, просто "кури циклы" мне не понятно) |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,833
|
![]()
А тут именно "кури цикл" - запускаете цикл, в котором выполняете рандом по всему диапозону, а в постусловии проверяете, что попали в допустимый.
Конечно, это простейший вариант. Есть всякие вариации, типа: если только один промежуток, то сужаем на него или сначала выбираем все допустимые промежутки, потом рандом по их номерам и рандом по полученному одному промежутку. Последний раз редактировалось p51x; 14.07.2017 в 08:25. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 04.02.2017
Сообщений: 8
|
![]()
А если разрешен, скажем всего 1 из 10 поддиапазонов, представляете какая вероятность что этот цикл зациклится на проверке постусловия и будет крутиться в нем 500 лет? )
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
В массивы строки и флажки:
Код:
Код:
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 04.02.2017
Сообщений: 8
|
![]()
Спасибо,
крутовато конечно написано, счас попытаюсь разобраться своим умишком что тут и где) |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Лаба по ассемблеру. Циклы. | NewLamer&Programer | Помощь студентам | 4 | 05.05.2013 18:12 |
Циклы, лаба по C++. | Mr.Voragus001 | Помощь студентам | 1 | 11.12.2011 09:05 |
Лаба на процедуры и функции Delphi | Danis_ka | Помощь студентам | 5 | 11.06.2011 19:43 |
delphi Лаба на файлы и записи: | Danis_ka | Помощь студентам | 1 | 11.06.2011 18:25 |
Лаба в Delphi | сер4ей | Помощь студентам | 3 | 08.03.2009 13:44 |