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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2007, 20:52   #1
delphi_beginner
Пользователь
 
Регистрация: 24.02.2007
Сообщений: 22
По умолчанию Изменения алгоритма

Имеется алгоритм тестирования.
Рассчитан на 5 вопрос и 4 варианта ответа.
Необходимо изменить, чтобы вместо 5 вопросов можно было помещать 10 (и иное кол-во) вопросов.

implementation
{$R *.dfm}
type
MyQuestion = record
FName : String[100];
FTrue : String[200];
ResAr : Array[1..5] of String;
end;
var
QArray : array[1..10] of MyQuestion;
procedure TfrmTest.mnuFileOpenClick(Sender: TObject);
begin
if odTest.Execute then begin;
Question := 1;
Counter := 1;
BorderIcons := BorderIcons - [biSystemMenu];
rg.Enabled:=True;
AssignFile(f, odTest.FileName);
Reset(f);
bStarted := True;
ParseTest;
ShowQ;
end;
end;
procedure TfrmTest.ParseTest;
var
i, j: Integer;
s, buf : String;
begin
k := 0;
// читаем вопрос
buf := '';
while not eof(f) do
begin
buf := '';
repeat
readLn(f, s);
if s[1]<>'.' then
buf := buf + ' ' + s;
until s[1]='.';
//ShowMessage('Прочитал вопрос '+buf);
QArray[Counter].FName := buf;
// теперь считаем из файла варианты ответа
i := 1;
repeat
buf := '';
repeat
readln(f, s);
//showmessage('Считана строка '+s+#10#13+'i='+IntToStr(i));
// отладка выше
if (s[1] <> '.') and (s[1] <> ',') then
buf := buf + s + ' ';
until (s[1] = '.') or (s[1]=',');
if s[2]<> '' then
k := StrToInt(s[2]);
for j := 1 to 5 do ScoreArray[j] := 0;
AnsArray[i] :=buf;
inc(i);
until s[1] = '.';
for i := 1 to 5 do
begin
QArray[Counter].ResAr[i] := Ansarray[i];
QArray[Counter].FTrue:=AnsArray[k];
end;
Inc(Counter);
end;
btnOk.Enabled := False;
end;
procedure TfrmTest.FormCreate(Sender: TObject);
var i:integer;
begin
Question := 1;
Score := 0;
Counter := 1;// счетчик в массиве стуктуры
for i := 1 to 5 do ScoreArray[i] := 0;
bStarted := False;
end;
procedure TfrmTest.btnOKClick(Sender: TObject);
var i, j:Integer;
ocenka: String;
begin
Inc(Question);
i := rg.ItemIndex+1;
//showmessage('i='+inttostr(i)+' ' +rg.Items[rg.itemindex]);
if ScoreArray[i] = 1 then begin
ShowMessage('Верно!');
Inc(Score);
//ShowMessage(inttostr(score));
end
else
ShowMessage('Неверно!'+#10#13+'Верн ый ответ: '+#10#13+sGood);
for j:=1 to 5 do ScoreArray[j]:=0;
//showmessage(inttostr(question));
if Question<=5 then
begin
for i:=0 to 4 do
rg.Items[i]:='';
rg.ItemIndex:=-1;
ShowQ;
end
else
begin
case Score of
1,2: ocenka := 'Двойка! Учите еще';
3 : ocenka := 'Тройка! Неплохо бы улучшить!';
4 : ocenka :=' Четверка!Весьма хорошо!';
5 : ocenka := 'Отлично!';
end;
Beep;
ShowMessage('Тест окончен!'+#10#13+'Вы ответили на '
+IntToStr(Score)+' вопросов!'+#10#13+ ocenka);
BorderIcons := BorderIcons + [biSystemMenu];
Score := 0;
for i:=0 to 4 do
rg.Items[i]:='';
lblQuestion.Caption:='';
rg.Enabled:=False;
btnOk.Enabled:=False;
Caption := 'Тестирующее приложение';
bStarted := False;
end;
end;
procedure TfrmTest.rgClick(Sender: TObject);
begin
btnOk.Enabled := True;
end;
procedure TfrmTest.ShowQ;
label m;
var i, j, z:Integer;
begin
Randomize;
Caption := 'Вопрос '+IntToStr(Question);
j := Random(Counter-1)+1;
lblQuestion.Caption:=QArray[j].FName;
//showmessage(qarray[j].FName);
for i := 1 to 5 do
begin
m:
z:=Random(5)+1;
//showmessage(ansarray[j]);
if rg.Items.IndexOf(QArray[j].ResAr[z])=-1 then
rg.Items[i-1] := QArray[j].ResAr[z]
else
goto m;
if rg.Items[i-1] = QArray[j].FTrue then
begin
ScoreArray[i] := 1;
sGood := QArray[j].FTrue;
end;
end;
end;

Подскажите пожалуйста, что надо изменять.
Сам пробовал, всё читает, но не по порядку и вопросы повторяются. Спасибо за внимание.
delphi_beginner вне форума Ответить с цитированием
Старый 13.05.2007, 21:02   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Не стыдно плагиатом заниматься???
merax вне форума Ответить с цитированием
Старый 13.05.2007, 21:27   #3
delphi_beginner
Пользователь
 
Регистрация: 24.02.2007
Сообщений: 22
По умолчанию

При чём тут плагиатство? Документ с алгоритмом был в свободном доступе, автор его использование не запрещал, и для этого он был и написан как обучающая статья.
Вот блин, спросишь, а те флуд...
delphi_beginner вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По поводу алгоритма хеширования md5 Jugger Помощь студентам 2 03.09.2008 22:57
доработка алгоритма... Sota Помощь студентам 2 13.06.2008 15:45
Сложность Алгоритма PChEL@ Помощь студентам 3 26.05.2007 07:56
визуализация алгоритма Alar Паскаль, Turbo Pascal, PascalABC.NET 0 30.10.2006 14:10