Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 811

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Я создаю тест на делфи. Я записал все вопросы в блокнот (имеется 1000 вопросов). Программа нормально работает. Только есть одна проблема(для меня). Программа показывает все вопросы записанные в блокноте. А мне нужно чтобы программа показала только 30 вопросов из 1000, выбрав случайным образом. Помогите пжалуйста решить эту проблему. Заранее БОЛЬШОЕ ВСЕМ спасибо!!!!

Beknur Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Beknur (статус: Посетитель)
Вопрос отправлен: 25 февраля 2010, 07:58
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Fantom

Здравствуйте, Beknur!
Попробуй программу Конструктор тестов. Пользуюсь сам отличная штука. Вопросы можно выбирать и случайноым образом и подряд. Также имеется статистика по оценкам диаграммы и многое другое.

Ответ отправил: Fantom (статус: 2-ой класс)
Время отправки: 26 февраля 2010, 06:43
Оценка за ответ: 5

Комментарий к оценке: Спасибо ВАМ большое. Просто мне самому хотелось.

Мини-форум вопроса

Всего сообщений: 13; последнее сообщение — 25 февраля 2010, 19:49; участников в обсуждении: 7.
DNK

DNK (статус: Студент), 25 февраля 2010, 08:04 [#1]:

Не записывай все вопросы в блокнот, заноси только 30 вопросов, выбрав случайным образом.
"Digital Networked Knight"
Beknur

Beknur (статус: Посетитель), 25 февраля 2010, 08:20 [#2]:

Мне хотелось чтобы программа сама это сделала. Если есть варианты поскажите или дайте ссылку где показаны примеры. Заранее большое спасибо
Егор

Егор (статус: 10-ый класс), 25 февраля 2010, 08:34 [#3]:

код-то свой покажи, как делаешь считываение записей
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
min@y™

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

Roma_no_off (статус: Посетитель), 25 февраля 2010, 13:07 [#6]:

А не легче поработать с инифайлом?
Beknur

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™

min@y™ (статус: Доктор наук), 25 февраля 2010, 13:21 [#8]:

Цитата (Beknur):

Вот мой исходник.

Ну и чаво нам с ним делать? Распечатать и...?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Beknur

Beknur (статус: Посетитель), 25 февраля 2010, 13:24 [#9]:

to Minoy. Егор написал покажи код и я показал
min@y™

min@y™ (статус: Доктор наук), 25 февраля 2010, 13:33 [#10]:

Цитата (Beknur):

Егор написал покажи код и я показал

а, тогда ладно...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Death_Master

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.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:56
Выполнено за 0.03 сек.