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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2012, 14:31   #1
Умагаджи
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 49
По умолчанию Выбор тестов в случайном порядке

Привет! Есть исходник теста рабочий. Мне нужно чтобы вопросы из файла теста выбирались в случайном порядке. Помогите переделать исходник
Вложения
Тип файла: zip temp.zip (422.5 Кб, 59 просмотров)
Умагаджи вне форума Ответить с цитированием
Старый 16.04.2012, 20:35   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Выделите массив длиной равной количеству вопросов теста, запишите туда по прядку натуральные числа.
Перемешайте их.
Вытаскивайте вопросы в том порядке, как в перемешанном массиве.
s-andriano вне форума Ответить с цитированием
Старый 16.04.2012, 23:07   #3
Умагаджи
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 49
По умолчанию

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

Цитата:
вот ты умный.. я тоже знаю что так можно сделать.. но тут иначе устроено немножко.
ничего тут не иначе устроено! Как Вам s-andriano посоветовал, так и делайте!

в начале модуля, там, где объявляются массивы AnswerQuestion, QuestionText1, QuestionText2 и т.д.
добавьте массив, например
Код:
  OrderQuestons: array[0..max] of integer;
на событие FormCreate
добавьте вызов иницилизации ГСЧ:
Код:
   Randomize;
в процедуре загрузки вопросов теста в память LoadTest

после того, как все вопросы загружены
вставьте такой код:
Код:
var
  j, k, buf : integer;
....

  s.Free; // уничтожаем переменную
  for j:=0 to H-1 do OrderQuestons[j]:=j;
 //----------перемешать-------------
 for j:=0 to H-2 do
  begin
   k:= Random(H-j)+j;
   if k<>j then begin
     buf:=OrderQuestons[j];
     OrderQuestons[j]:=OrderQuestons[k];
     OrderQuestons[k]:=buf;
   end;
  end;
и потом везде, где выводится вопрос NOW:
LoadQuestion(now)
заменить на такой код:
Код:
LoadQuestion( OrderQuestons[now] );
код писал тут, разумеется не проверял, но общая идея, надеюсь, ясна?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.04.2012, 12:33   #5
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Перемешиваем случайным образом. И последовательно с начадо и до конца получаем вопросы.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 18.04.2012, 05:29   #6
Умагаджи
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 49
По умолчанию

А можно сделать так чтобы вопрос в файл вопросов можно было добавлять через программу? сделать поле эдит например вводить вопрос и чтобы он добавлялся к вопросам
Умагаджи вне форума Ответить с цитированием
Старый 18.04.2012, 07:35   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А можно сделать так чтобы вопрос в файл вопросов можно было добавлять через программу? сделать поле эдит например вводить вопрос и чтобы он добавлялся к вопросам
да. можно. только не через edit, а через MEMO, например.
но, во-первых, в программе тестирования это выглядит мягко говоря странно (нужно новую программу для составления вопросов делать), а во-вторых, файл вопросов обычный текстовый файл - зачем нужны пляски с бубном, если его обыкновенным блокнотом (или любым другим редактором текста) можно прекрасно редактировать?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.04.2012, 14:37   #8
Умагаджи
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 49
По умолчанию

Можно конечно через блокнот, просто задание такое дали... чтобы можно было добавлять вопросы через программу
Умагаджи вне форума Ответить с цитированием
Старый 18.04.2012, 17:41   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно. делайте. вариантов реализации можно придумать МАССУ.
я бы отталкивался от данных, загруженных в массивы AnswerQuestion, QuestionText1, QuestionText2, QuestionText2 ...
интерфейс - ЛЮБОЙ, на какой фантазии и умений хватит!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.04.2012, 17:42   #10
Умагаджи
Пользователь
 
Регистрация: 05.02.2011
Сообщений: 49
По умолчанию

я сделал уже.. Всем спасибо.
Умагаджи вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить число, состоящего из цифр числа a, записанных в не убывающем порядке. 3/5 тестов. RusseLfStyle Паскаль, Turbo Pascal, PascalABC.NET 20 12.03.2012 09:33
Вопросы в тесте в случайном порядке. DENIS_1992 Общие вопросы Delphi 8 07.06.2011 11:47
Вопросы из мемо в случайном порядке 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