|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2007, 20:52 | #1 |
Пользователь
Регистрация: 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; Подскажите пожалуйста, что надо изменять. Сам пробовал, всё читает, но не по порядку и вопросы повторяются. Спасибо за внимание. |
13.05.2007, 21:02 | #2 |
Форумчанин
Регистрация: 27.12.2006
Сообщений: 955
|
Не стыдно плагиатом заниматься???
|
13.05.2007, 21:27 | #3 |
Пользователь
Регистрация: 24.02.2007
Сообщений: 22
|
При чём тут плагиатство? Документ с алгоритмом был в свободном доступе, автор его использование не запрещал, и для этого он был и написан как обучающая статья.
Вот блин, спросишь, а те флуд... |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
По поводу алгоритма хеширования 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 |