Помощь Тест по русскому яз. Delphi

  • Автор темы KitoPoni
  • Дата начала
K

KitoPoni

#1
Помогите доделать-переделать тест по русскому языку.
Т.е. в самой программе, сделанной через делфи, (*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.
 
K

KitoPoni

#3
Помогите сделааать!
Заранее спасибо.

PHP:
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.
 
09.11.2009
665
1
#4
Есть готовые тесты(тесты для девочек), работают с тхт файлами, также идет документ в котором расказивается про структуру файла с вопросами.
Посмотреть вложение 1234.zip
ЗЫ Писал однокласснице
 

Вложения

  • 72.6 КБ Просмотры: 185
K

KitoPoni

#5
Есть готовые тесты(тесты для девочек), работают с тхт файлами, также идет документ в котором расказивается про структуру файла с вопросами.
Посмотреть вложение 4284
ЗЫ Писал однокласснице
Там чуть не то.

Хотяб помогите добавить-прописать строку, которая будет брать вопросы из файла test.txt рандомом-вразброс.
 
09.11.2009
665
1
#6
Хотяб помогите добавить-прописать строку, которая будет брать вопросы из файла test.txt рандомом-вразброс.
Просматриваете файл, найдя строку с вопросом заносите её номер в масив.
Потом рандомно мешаете масив.(берем элемент1, заносим его значение в переменную t делаем рандомное число, элементу1 присваеваем заначение рандомного элемента, рандомному элементу присваиваем t).
Код:
for i:=1 to n do
begin
k:=a[i];
k2:=random(n-1)+1;
a[i]:=a[k2];
a[k2]:=k
end;
 
K

KitoPoni

#7
А в какую строку или вместо какой это надо вставить?)
 
09.11.2009
665
1
#8
ну в масав а надо изначально занести номера строк с вопросами, а потом при переходе на следуйщий вопрос, брать из следуйщего елемента масива номер строки, с которой начинается вопрос