
22.07.2008, 20:05
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Добавления помечены знаками // !!!
Массив для хранения инфы
Код:
private
{ Private declarations }
vse_voprosy:array[1..max_voprosov]of tvse_voprosy;
ispol_voprosy:array[1..voprosov_v_teste] of integer;
RightAnswers : Array [1..voprosov_v_teste] of Boolean; //!!!
schitano_voprosov:integer;
tek_vopros,nomer:integer;
file_s_voprosami:text;
otvety_na_voprosy:array[1..voprosov_v_teste] of boolean;
Вывод результата:
Код:
procedure tform1.zapis_v_data_base;
function BoolToStr(AValue : Boolean) : String;
begin
If AValue Then Result := 'правильный' Else Result := 'неправильный';
end;
var
file_db:textfile;
I : Integer;
C : Integer;
begin
if fileexists(put_k_data_base+rasshirenie_file_data_base) then
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
append(file_db);
end
else
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
rewrite(file_db);
end;
writeln(file_db,'Имя '+student.name);
writeln(file_db,'Фамилия '+student.familiya);
writeln(file_db,'Организация '+student.group);
writeln(file_db,'Дата '+datetostr(date));
writeln(file_db,'Время '+timetostr(time));
writeln(file_db,'Результат '+student.resultat);
writeln(file_db,' ');
writeln(file_db,'Расшифровка результата:');
C := 0;
For I := 1 To voprosov_v_teste Do
Begin
writeln(file_db,'Вопрос № ' + IntToStr(I) + ' - Ответ ' + BoolToStr(RightAnswers[i]));
If RightAnswers[i] Then Inc(C);
End;
writeln(file_db,'Всего '+IntToStr(Round(100*C/voprosov_v_teste))+'% правильных ответов');
writeln(file_db,' ');
{ flush(file_db);}
closefile(file_db);
end;
Заполнение массива:
Код:
procedure TForm1.OtvetgotovClick(Sender: TObject);
var i:integer;
begin
for i:=1 to max_otvetov-1 do
begin //n 200
if otvet.Text=vse_voprosy[nomer].otvety[i] then
begin //n 201
RightAnswers[tek_vopros] := True; // !!!
messagedlg('Ответ правильный',mtconfirmation,[mbok],0);
otvety_na_voprosy[tek_vopros]:=true;
tek_vopros:=tek_vopros+1;
otvet.SetFocus;
if tek_vopros=voprosov_v_teste+1 then
begin //n 202
messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0);
student.resultat:=inttostr(form1.resultat);
form1.zapis_v_data_base;
close;
end; //k 202
form1.vivod_voprosa;
exit;
end; // k 201
end; // k 200
if not(otvety_na_voprosy[tek_vopros]) then
begin //n 203
messagedlg('Ответ неправильный',mtconfirmation,[mbok],0);
RightAnswers[tek_vopros] := False; // !!!
otvety_na_voprosy[tek_vopros]:=false;
tek_vopros:=tek_vopros+1;
if tek_vopros=voprosov_v_teste+1 then
begin //n 204
messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0);
student.resultat:=inttostr(form1.resultat);
form1.zapis_v_data_base;
close;
end; // k 204
form1.vivod_voprosa;
end; // k 203
otvet.SetFocus;
end;
|