|
Вопрос # 3 811/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Я создаю тест на делфи. Я записал все вопросы в блокнот (имеется 1000 вопросов). Программа нормально работает. Только есть одна проблема(для меня). Программа показывает все вопросы записанные в блокноте. А мне нужно чтобы программа показала только 30 вопросов из 1000, выбрав случайным образом. Помогите пжалуйста решить эту проблему. Заранее БОЛЬШОЕ ВСЕМ спасибо!!!!
 |
Вопрос задал: Beknur (статус: Посетитель)
Вопрос отправлен: 25 февраля 2010, 07:58
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Fantom
Здравствуйте, Beknur!
Попробуй программу Конструктор тестов. Пользуюсь сам отличная штука. Вопросы можно выбирать и случайноым образом и подряд. Также имеется статистика по оценкам диаграммы и многое другое.
 |
Ответ отправил: Fantom (статус: 2-ой класс)
Время отправки: 26 февраля 2010, 06:43
Оценка за ответ: 5
Комментарий к оценке: Спасибо ВАМ большое. Просто мне самому хотелось.
|
Мини-форум вопроса
Всего сообщений: 13; последнее сообщение — 25 февраля 2010, 19:49; участников в обсуждении: 7.
|
DNK (статус: Студент), 25 февраля 2010, 08:04 [#1]:
Не записывай все вопросы в блокнот, заноси только 30 вопросов, выбрав случайным образом.
"Digital Networked Knight"
|
|
Beknur (статус: Посетитель), 25 февраля 2010, 08:20 [#2]:
Мне хотелось чтобы программа сама это сделала. Если есть варианты поскажите или дайте ссылку где показаны примеры. Заранее большое спасибо
|
|
Егор (статус: 10-ый класс), 25 февраля 2010, 08:34 [#3]:
код-то свой покажи, как делаешь считываение записей
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
min@y™ (статус: Доктор наук), 25 февраля 2010, 09:12 [#4]:
Давай для начала определимся: вопросы свои ты записал не в блокнот, а в текстовый файл. Какой программой это сделано - неважно.
Чтобы загрузить весь список в память, используй TStringList; чтобы выбирать их случаным образом, есть функция Random().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Егор (статус: 10-ый класс), 25 февраля 2010, 09:20 [#5]:
min@y™: дык, я и просил код его привести, чтобы понятно было, как он вообще считывает данные из файла
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
25 февраля 2010, 11:18: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.
|
Roma_no_off (статус: Посетитель), 25 февраля 2010, 13:07 [#6]:
А не легче поработать с инифайлом?
|
|
Beknur (статус: Посетитель), 25 февраля 2010, 13:15 [#7]:
Вот мой исходник.
var
form4: Tform4;
f:textfile;
ss,dj,i,djs,min,sec:integer;
s:string;
a:array[1..5] of string;
implementation
{$R *.dfm}
procedure test();
begin
inc(ss);
readln(f,s);
for i:=1 to 5 do readln(f,a[i]);
readln(f,dj);
form4.R1.Checked:=true;
form4.Label1.Caption:=s;
form4.R1.Caption:=a[1];
form4.R2.Caption:=a[2];
form4.R3.Caption:=a[3];
form4.R4.Caption:=a[4];
form4.R5.Caption:=a[5];
end;
procedure Tform4.FormCreate(Sender: TObject);
begin
assignfile(f,'TeST.txt');
reset(f);
ss:=0;
test;
min:=29;
sec:=59;
end;
procedure Tform4.Button1Click(Sender: TObject);
var ew:integer;
p:real;
rt:integer;
begin
if r1.Checked then ew:=1;
if r2.Checked then ew:=2;
if r3.Checked then ew:=3;
if r4.Checked then ew:=4;
if r5.Checked then ew:=5;
if ew=dj then inc(djs);
if not eof(f) then
test
else
begin
form4.Caption:='Корытынды';
panel1.Visible:=true;
label6.Caption:=inttostr(ss);
label7.Caption:=inttostr(djs);
p:=ss/100;
p:=djs/p;
label8.Caption:=formatfloat('##.##',p)+'%';
rt:=strtoint(formatfloat('###',p));
case rt of
0..50 : label9.Caption:='2 (канагаттанарлыксыз)';
51..75: label9.Caption:='3 (канагаттанарлык)';
76..89: label9.Caption:='4 (жаксы)';
90..100: label9.Caption:='5 (оте жаксы)';
end;
end;
end;
procedure Tform4.Button2Click(Sender: TObject);
begin
form1.Enabled:=true;
form4.Hide;
form1.show;
end;
procedure Tform4.tmrTimer(Sender: TObject);
begin
inc(sec,-1);
if sec=0 then
begin
sec:=59;
inc(min,-1);
end;
tme.Caption :='Сізде ' + inttostr(min) + ' мин. '+ inttostr(sec) +' секунд калды ';
end;
end.
|
|
min@y™ (статус: Доктор наук), 25 февраля 2010, 13:21 [#8]:
Цитата (Beknur):
Вот мой исходник.
Ну и чаво нам с ним делать? Распечатать и...?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Beknur (статус: Посетитель), 25 февраля 2010, 13:24 [#9]:
to Minoy. Егор написал покажи код и я показал
|
|
min@y™ (статус: Доктор наук), 25 февраля 2010, 13:33 [#10]:
Цитата (Beknur):
Егор написал покажи код и я показал
а, тогда ладно...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Death_Master (статус: Посетитель), 25 февраля 2010, 13:54 [#11]:
1) нужно строки раскидать в TStrings
2) номера правильных ответов нужно закинуть в массив
3) в процедуре тестирования нужно брать случайный номер (vn>1;vn<1000)
4) процедуру test нужно выполнить 300 раз
Если есть вопросы по пунктам - пишите 
P.S. inc(sec,-1); == dec(sec);
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
|
|
Мережников Андрей (статус: Абитуриент), 25 февраля 2010, 18:10 [#12]:
посмотрите на форуме - подобные вопросы о случайном выборе уже были.
|
|
Егор (статус: 10-ый класс), 25 февраля 2010, 19:49 [#13]:
Beknur:
слушай, а где хотя бы комментарии? нихрена не понятно.
хоть объяснил бы, что к чему у тебя.
куча лабелов, чекбоксов (или там не чекбоксы?).
я просил не исходник, а ту часть кода, которая отвечает за загрузку файла и вывод на экран твоих вопросов.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|