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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2011, 21:56   #1
DENIS_1992
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 24
Восклицание Вопросы в тесте в случайном порядке.

Доброго времени суток форумчане, у меня тема курсовой работы - тестирующая программа, в ней вопросы берутся из текстового файла, на каждый вопрос отводится 15 строк, как сделать задание вопросов в случайном порядке и что бы вопросы не повторялись?
DENIS_1992 вне форума Ответить с цитированием
Старый 06.06.2011, 23:36   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Здравствуйте, Можно как вариант сделать следующие, создать массив и в него загонять числа задание, по мере прохождения теста, то есть выдало случайное число вы его проверяете нет ли его в массиве и если нет то шуруете задание =)
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 06.06.2011, 23:40   #3
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вот ,что Вам пригодиться :

http://www.delphibasics.ru/Randomize.php
http://www.delphibasics.ru/Random.php

Пример (приблизительный) :

Код:
a : array [1..1000] of integer;

for i:=1 to 1000 do 
a[i]:=100000 + i;
Randomize;

for i:=1 to 1000 do begin
y := Random (1000);
b:= a[y];
a[y]:=a[i];
a[i]:=b;
end;
Ну, а дальше, пронумеруйте вопросы и дело в шляпе.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 06.06.2011, 23:53   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) сходите в поиск. Эта задача на форуме решалась неоднократно

2) все вопросы должны быть заданы? Или только часть из них?
Можно очень просто загрузить все вопросы в память, перетасовать и брать оттуда по порядку (они уже будут идти в случайном порядке)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.06.2011, 00:04   #5
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Можно очень просто загрузить все вопросы в память, перетасовать и брать оттуда по порядку (они уже будут идти в случайном порядке)
Если вопросов ну не очень много, можно запомнить порядок ответов,
лучше генератор, будет непредсказуемо, что более эффективно.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 07.06.2011, 00:55   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

можно поступить следующим образом.

Пусть в файле содердится N вопросов. Мы задаём некоторое число m (которое не превышает N).

Сгенерировать m случайных чисел, принадлежащих диапазону от 1 до N, включая границы диапазона.
Поместить эти числа в множество (если вопросов больше, чем 256, можно написать свой объект-множество, способный хранить более 256 элементов, либо же просто воспользоваться массивом).

Далее (хорошо было бы, если вопросы в файле были занумерованы) читаем из файла вопросы. Если номер считываемого вопроса содержится в нашем "множестве", то записываем его к себе в переменные, иначе - пропускаем его.

Как перемешать массив вопросов?
Можно так:
если в массиве 1 вопрос - выход, нечего там мешать.
Если в массиве 2 вопроса, то сгенерировать случайное число (из диапазона (0;1)), и если оно больше, чем, например, 0.5, то обменять эти вопросы местами.

Во всех остальных случаях, когда число вопросов 3 либо больше, можно поступить так:
Цитата:
for i:=1 to m do
begin
генерируем случайное число J из диапазона
от 1 до m (включая границы), НЕРАВНОЕ i
а после просто меняем местами i-й и j-й элементы.
end.
Вадим Мошев вне форума Ответить с цитированием
Старый 07.06.2011, 09:55   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Есть подобная программа, обращайся, потолкуем.

А, вообще, мысль главная - запомнать надо "приведенный" вопрос, т.е. тот который реально находится в строке, что-то вроде массива, где индексом является номер строки, куда записывается уже реальный вопрос, при отметке строки надо указать что пользователь ответил на вопрос, который лежит в нашем массиве по индексу отмечсенной строки. Положить всё в массив - труда нет, тасуем и кладем, только всегда четко помнить что конкретный вопрос лежит по конкретной строке, чтобы не запутаться))
phomm вне форума Ответить с цитированием
Старый 07.06.2011, 11:37   #8
DENIS_1992
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 24
По умолчанию

Как мне сделать, что бы из массива вопросы читались в случайном порядке и не повторялись??
p.s.нужно задать все вопросы из файла, а некоторые из них занимают больше чем 256 символов
DENIS_1992 вне форума Ответить с цитированием
Старый 07.06.2011, 11:47   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

тут уже столько советов надавали? Неужели трудно выбрать?

И посмотрите, например, вот эту тему (я же говорил, зря Вы поиском не пользуетесь!)
Создание программы-аналога игры Кто хочет стать миллионером
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы из мемо в случайном порядке Selicat Помощь студентам 5 18.05.2011 15:27
Rss лента ( как можно вывести в случайном порядке ?) nikolj JavaScript, Ajax 0 01.05.2011 11:55
C# - Посимвольный вывод слова в случайном порядке Lastsummer Помощь студентам 4 02.02.2011 12:40
Ошибка в тесте grom333 Помощь студентам 1 09.04.2010 16:57
отсортировать таблицу сначала в алфавитном порядке фамилий продавцов, затем в порядке возростания получен Lora Microsoft Office Excel 1 31.05.2008 17:22