Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.01.2010, 23:03
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
Вопрос Рандом и защита от повторений

Добрый вечер, товарищи программисты.
Пишу программулину, включающую в себя небольшое тестирование. Тесты находятся в бд. Заступорился на защите от запоминания - рандомная загрузка вопросов и , соответственно, вопросов к ним.
Код:
for i:=1 to 4 do begin
radiobutton1.caption:=table1.fields[random(i)].asstring;
radiobutton2.caption:=table1.fields[random(i)].asstring;
radiobutton3.caption:=table1.fields[random(i)].asstring;
radiobutton4.caption:=table1.fields[random(i)].asstring;
end;
Проблема:
Видимо то ли цикл работает не правильно, то ли ему здесь вообще не место, т.к. часто вижу значения нулевого поля (fields[0]), которым здесь не место. Как это исправить?
Вопрос:
Как написать защиту от повторений? Т.к. сейчас постоянно встречаются несколько значений одного поля.

Заранее благодарен, с ув. Лунтик-Некрофил.
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #2  
Старый 14.01.2010, 23:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. random(i)+1 спасет от вывода поля с индексом 0.
2. Да ты вообще непонятно что делаешь Fields - это список полей одной записи. А у тебя каждый вопрос д.б. отельной записью. Фактически, тебе надо бы получить весь список вопросов, а потом генерить их номера для вывода и запоминать уникальный идентификатор вопроса, что бы проверить на то, что он повторяется.

Или я чего-то не понимаю и тебе надо вывести ВСЕ вопросы, но к ним ОТВЕТЫ в случайном порядке?
Ответить с цитированием
  #3  
Старый 14.01.2010, 23:44
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

1. Не помогло особо, просто немного переделал саму бд.
2. Видимо я чего-то не понимаю... Бд написанна примитивная.
Код:
Правильный|Неправильный1|Неправильный2|Неправильный3|Вопрос
В общем надо , чтобы при каждом запуске проги рандомно загружались вопросы и ответы к ним, но чтобы не было повторений.
По идее надо просто написать запоминалку( отдельно для вопросов и отдельно для ответов) , куда заносить каждый уже загруженный элемент, и при загрузке проверять - если он уже есть в ней, то его не загружаем... Но вопрос как её создать)
Если сможешь хоть образно описать (желательнее написать ) - рад буду)
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #4  
Старый 15.01.2010, 18:57
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Ни у кого нет никаких предложений/догадок?=(
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #5  
Старый 16.01.2010, 07:35
Serga Serga вне форума
Прохожий
 
Регистрация: 28.01.2008
Сообщения: 28
Репутация: 10
По умолчанию Рандом и защита от повторений

Сколь я понял, надо чтоб при старте вопросника случайным образом выбирался вопрос, а ответы к нему в случайном порядке "вешались" на radiobutton'ы (навроде шоб не запоминали "координаты" ответа) и далее в том же духе;

Вот к примеру такое решение:

Выгрузить список вопросов в, скажем, TStringList

Рандомным образом отсортировать и задавать их по порядку;
или
Рандомно выбираем вопрос и после ответа удаляем его из списка;

Определяем радиобуттоны:
Выгружаем в TStringList ответы, рандомно сортируем и по порядку назначаем радиобуттонаМ.
Ответить с цитированием
  #6  
Старый 16.01.2010, 17:21
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию

Serga
Слишком много получится... Тем более, что у меня бд... Как вариант можно перемешивать при каждом запуске проги в бд значения... Но к сожалению я хз как это сделать=(

malekskv
Во первых, тестирование сделанно почти полностью, проблема только в запоминании.
Во вторых, твоя прога выдает ошибку по прохождению теста.

Я прошу дать для начала мне хотя бы смутное представление, а вопросы будут потом...
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #7  
Старый 16.01.2010, 14:08
malekskv malekskv вне форума
Прохожий
 
Регистрация: 13.11.2009
Сообщения: 44
Репутация: 14
По умолчанию Рандом

Вот тесты где все делается так как тебе нужно (даже больше, только без бд) вот описание:

1) в начале теста вводим имя\фамилию и под конец теста сохраняем файл под названием *имя* *фамилия*.test
2) Выбор формы прохождения теста (учение или контроль;
При форме учение при нажатии на ответ пишется сразу правильный этот ответ или нет, при контроле выбираем ответ и отвечаем.)
3) Средний и сложный уровень теста (средний 12 вопросов, 5 минут на прохождение, максимум 10 баллов; Сложный 18 вопросов, 8 минут на прохождение, максимум 12 баллов.)
4) Выведение вопросов и вариантов ответов в случайном порядке(вопросы и ответы вбиваются в memo, может быть вписано абсолютно любое число вопросов, из них будет выбираться случайным образом количество вопросов зависимое от уровня теста)
5) Время на прохождение (при окончании времени выводит результаты теста сколько успели..)
6) При завершении теста выводит оценку и список вопросов на который были данные неверные ответы для контроля.
7) Опять же повторюсь сохраняет файл под именем *имя* *фамилия*.test с зашифрированой информацией в папку с екзешником.
В файл сохраняется Имя и Фамилии тестера. оценка. Сложность.
8) В начале теста можно открыть и просмотреть результаты тестов из файлов *.test (идет дешифрация).
9) Автосайзинг (без разницы какое разрешение монитора хоть 800*600, хоть 2048 на 1536, все елементы теста будут стоять на своих местах пропорционально.);


Если хочешь могу продать за умеренную цену.. стучи в аську: 485766405
Вложения
Тип файла: rar Tester.rar (10.5 Кбайт, 139 просмотров)

Последний раз редактировалось malekskv, 16.01.2010 в 14:14.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025