|
Вопрос # 2 219/ вопрос открыт / |
|
Здравствуйте, эксперты! Помогите, пожалуйста. Практически готова программа тестирования знаний учеников. Таблицы Парадокс7. При нажатии кнопки программа просто переходит к следующему вопросу в таблице, а хотелось бы сделать случайную выборку вопросов. Такую выборку нужно делать из промежуточной таблицы? И по какому полю, т.к. номер вопроса автоинкрементное поле, т.е. при удалении данный номер больше не используется.
 |
Вопрос задала: Евгения (статус: Посетитель)
Вопрос отправлен: 20 декабря 2008, 14:24
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Евгения!
Обычно такую задачу решают так. заводиться массив целых чисел с размером равным кол-ву вопросов. в этот массив переписываются все id вопросов. Хотя поле автоинкрементное, это не значит что они будут образовывать непрерывную последовательность. Вполне могут быть пропуски. Это обычное явление.
После того, как номера будут переписаны, надо сделать перемешивание. Для этого можно использовать специальные алгоритмы, а можно самый примитивный. Припустим что мы имеем функцию Swap(i,j:integer) которая обменивает в массиве два элемента, а len - размер этого массива. Вот код для перемешивания
for i:=0 to 1000 do
Swap(random(len-1), random(len-1))
Функцию Swap думаю и сами напишите. там всего три строки.
теперь, когда у нас есть массив, задача упрощаеться. просто делаем цикл по массиву и всё.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 21 декабря 2008, 02:10
Оценка за ответ: 5
Комментарий к оценке: Спасибо, всё стало гораздо проще)
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|