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

Тема в разделе "Pascal and Delphi", создана пользователем KitoPoni, 17 янв 2011.

  1. KitoPoni

    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.
     
  2. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
  3. KitoPoni

    KitoPoni Гость

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

    Код (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.
     
  4. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Есть готовые тесты(тесты для девочек), работают с тхт файлами, также идет документ в котором расказивается про структуру файла с вопросами.
    Посмотреть вложение 1234.zip
    ЗЫ Писал однокласснице
     
  5. KitoPoni

    KitoPoni Гость

    Там чуть не то.

    Хотяб помогите добавить-прописать строку, которая будет брать вопросы из файла test.txt рандомом-вразброс.
     
  6. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Просматриваете файл, найдя строку с вопросом заносите её номер в масив.
    Потом рандомно мешаете масив.(берем элемент1, заносим его значение в переменную t делаем рандомное число, элементу1 присваеваем заначение рандомного элемента, рандомному элементу присваиваем t).
    Код (Text):
    for i:=1 to n do
    begin
    k:=a[i];
    k2:=random(n-1)+1;
    a[i]:=a[k2];
    a[k2]:=k
    end;
     
  7. KitoPoni

    KitoPoni Гость

    А в какую строку или вместо какой это надо вставить?)
     
  8. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    ну в масав а надо изначально занести номера строк с вопросами, а потом при переходе на следуйщий вопрос, брать из следуйщего елемента масива номер строки, с которой начинается вопрос
     
Загрузка...

Поделиться этой страницей