K
KitoPoni
Помогите доделать-переделать тест по русскому языку.
Т.е. в самой программе, сделанной через делфи, (*1*) необходимо переделать счет правильных-неправильных ответов. В моей проге если делаешь 1 ошибку, то тест прекращает работу и пишет, что "Вы не прошли тест...", а надо, чтоб баллы правильных-неправильных ответов выводились в конце теста, после всех 10 вопросов.
(*2*) Вопросы берутся из файла test.txt. Необходимо сделать, чтоб вопросы выбирались не из 10 написанных, а 10 из 50, но рандомом.
И прошу показать, как пишется этот файл - test.txt.
Вот код программы. Самой проги нету, т.к. полетел комп. Заранее благодарен.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
type
Tform1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
RadioGroup1: TRadioGroup;
Button2: TButton;
Label3: TLabel;
Panel1: TPanel;
Image1: TImage;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure GenerateNewQ;
procedure GenerateResult;
procedure GenerateLost;
end;
const
Q = 'Вопрос ';
O_k = 'Верно';
_of = ' из ';
Win1 = 'Вы успешно прошли тест!';
win2 =' Поздравляем';
Iost2 = 'Неверно';
Lost1 = 'Вы не прошли тест. Вы не умнее пятиклассника! ';
var
Forml: Tform1;
N : Integer;
num : Integer;
ri : Integer;
implementation
uses Unit2; {$R *.dfm}
procedure Tform1.GenerateNewQ;
var S: String;
begin
begin
inc(num);
label1l.Caption: = Q+inttostr(num)+_of+inttostr(N);
readln(S); Iabel2.Caption: = S;
readln(S); RadioGroup1.Items.Strings[0]:= S;
readln(S); RadioGroup1.Items.Strings[1]:= S;
readln(S); RadioGroup1.Items.Strings[2]:= S;
readln(S); RadioGroup1.Items.Strings[3]:= S;
RadioGroup1. Buttons[ri] .Checked: = false;
readln(ri);
end
end;
procedure Tform1.GenerateResult; begin
label1.Caption: = win2;
Iabel2.Caption: = win1;
label3.Visible:= false;
button1.Visible: = false;
radiogroup1.Visible: = false;
end;
procedure Tform1.GenerateLost;
begin
label1.Caption := Iost2;
Iabel2.Caption: = lost1;
Iabel3.Visible: = false;
Button1.Visible: = false;
Radiogroup1.Visible:= false;
end;
procedure Tform1.FormCreate(Sender: TObject);
begin
num:= 0;
assignfile(input/test.txt'); readln(N); if (N>0)then
GenerateNewQ
else
begin closefile(input);
form1.Close
end;
end;
procedure Tform1.Button1Click(Sender: TObject);
begin
If (RadioGroup1.Buttons[ri].Checked) and (num<N) then
begin
label3.Caption:= Q+inttostr(num)+' - '+O_k;
GenerateNewQ;
End
else
if (num=N) and (RadioGroup1.Buttons[ri].Checked) then
GenerateResult
Else
if (not RadioGroup1.Buttons[ri].Checked) then
GenerateLost;
end;
procedure Tform1.Button2Click(Sender: TObject);
begin
closefile(input);
forml.Close;
end;
procedure Tform1.Button3Click(Sender: TObject); begin
form2.show;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
LabeI6: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
Implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
close;
end;
end.
Т.е. в самой программе, сделанной через делфи, (*1*) необходимо переделать счет правильных-неправильных ответов. В моей проге если делаешь 1 ошибку, то тест прекращает работу и пишет, что "Вы не прошли тест...", а надо, чтоб баллы правильных-неправильных ответов выводились в конце теста, после всех 10 вопросов.
(*2*) Вопросы берутся из файла test.txt. Необходимо сделать, чтоб вопросы выбирались не из 10 написанных, а 10 из 50, но рандомом.
И прошу показать, как пишется этот файл - test.txt.
Вот код программы. Самой проги нету, т.к. полетел комп. Заранее благодарен.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
type
Tform1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
RadioGroup1: TRadioGroup;
Button2: TButton;
Label3: TLabel;
Panel1: TPanel;
Image1: TImage;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure GenerateNewQ;
procedure GenerateResult;
procedure GenerateLost;
end;
const
Q = 'Вопрос ';
O_k = 'Верно';
_of = ' из ';
Win1 = 'Вы успешно прошли тест!';
win2 =' Поздравляем';
Iost2 = 'Неверно';
Lost1 = 'Вы не прошли тест. Вы не умнее пятиклассника! ';
var
Forml: Tform1;
N : Integer;
num : Integer;
ri : Integer;
implementation
uses Unit2; {$R *.dfm}
procedure Tform1.GenerateNewQ;
var S: String;
begin
begin
inc(num);
label1l.Caption: = Q+inttostr(num)+_of+inttostr(N);
readln(S); Iabel2.Caption: = S;
readln(S); RadioGroup1.Items.Strings[0]:= S;
readln(S); RadioGroup1.Items.Strings[1]:= S;
readln(S); RadioGroup1.Items.Strings[2]:= S;
readln(S); RadioGroup1.Items.Strings[3]:= S;
RadioGroup1. Buttons[ri] .Checked: = false;
readln(ri);
end
end;
procedure Tform1.GenerateResult; begin
label1.Caption: = win2;
Iabel2.Caption: = win1;
label3.Visible:= false;
button1.Visible: = false;
radiogroup1.Visible: = false;
end;
procedure Tform1.GenerateLost;
begin
label1.Caption := Iost2;
Iabel2.Caption: = lost1;
Iabel3.Visible: = false;
Button1.Visible: = false;
Radiogroup1.Visible:= false;
end;
procedure Tform1.FormCreate(Sender: TObject);
begin
num:= 0;
assignfile(input/test.txt'); readln(N); if (N>0)then
GenerateNewQ
else
begin closefile(input);
form1.Close
end;
end;
procedure Tform1.Button1Click(Sender: TObject);
begin
If (RadioGroup1.Buttons[ri].Checked) and (num<N) then
begin
label3.Caption:= Q+inttostr(num)+' - '+O_k;
GenerateNewQ;
End
else
if (num=N) and (RadioGroup1.Buttons[ri].Checked) then
GenerateResult
Else
if (not RadioGroup1.Buttons[ri].Checked) then
GenerateLost;
end;
procedure Tform1.Button2Click(Sender: TObject);
begin
closefile(input);
forml.Close;
end;
procedure Tform1.Button3Click(Sender: TObject); begin
form2.show;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
LabeI6: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
Implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
close;
end;
end.