|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
тестовая программа
помогите пожалуйста доделать код тестовой программы
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; const kol_vop=10; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; Edit1: TEdit; Edit2: TEdit; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; verno:boolean; Questions:array [1..kol_vop] of string; right,wrong:integer; endl:byte; i:integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin i:=1; right:=0; wrong:=0; //Здесь сам заполняешь вопросы которые тебе нужны и соответственно напиши там варианты ответов А, B, C и D Questions[1]:='Для чего нужен Делфи?'; Questions[2]:='Структура делфи -'; Questions[3]:=''; Questions[4]:=''; Questions[5]:=''; Questions[6]:=''; Questions[7]:=''; Questions[8]:=''; Questions[9]:=''; Questions[10]:=''; Memo1.Text:=Questions[1]; end; procedure TForm1.Button1Click(Sender: TObject); Var j:integer; begin If i=kol_vop+1 then begin showmessage('Тест окончен'); exit; end; //первый вопрос If i=1 then //здесь вписывай нужный тебе радиобаттон, который отвечает за правильный вариант вопроса If RadioButton1.Checked=true then begin // как написать варианты ответов для радиобаттонов //в этом случае, чтобы обновлялись со следующим вопросом ????? помогите дописать пожалуйста inc(right); inc(wrong); end; //второй вопрос If i=2 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=3 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=4 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=5 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=6 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=7 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=8 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=9 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; If i=10 then If RadioButton2.Checked=true then begin inc(right); inc(wrong); end; Edit1.Text:='Правильных ответов '+inttostr(right); Edit2.Text:='Не правильных ответов '+inttostr(wrong); inc(i); If i=kol_vop+1 then exit; Memo1.Text:=Questions[i]; end; end. |
#2
|
|||
|
|||
Маньяк!!!
Для тестовой программы тебе надо: 1. Memo - выводить вопрос 2. TRadioGroup - для вывода ответов и выпора пользователя. 3. Массив данных вида "Вопрос, Ответ1..ОтветN, Номер правильного ответа". 4. Цикл по вопросам с подсчетом кол-ва правильных ответов. Пусть у нас всегда будет 4 варианта ответов, один из которых правильный (простейший вариант): Код:
type TQuestion = record Text : String; Answers : Array [0..3] Of String; RightAnswer : Integer; // 0.. 3 end; const Q : Array [1..10] Of TQuestion = ((Text: 'Текст вопроса 1', Answers:('Ответ1','Ответ2','Ответ3','Ответ4'),0), // первый вопрос. и так всего 10 вопросов ...); procedure TForm1.btStartClick(Sender : TObject); begin AQuestion := 0; QRights := 0; btNextClick(Self); end; procedure TForm1.btNextClick(Sender : TObject); var I : Integer; begin // Если > 0 то забираем ответ. If AQuestion > 0 Then If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights); // Если > 10, то тест заеончен - выводим результат Inc(AQuestion); If AQuestion > 10 Then Begin Memo1.Lines.Text := ''; RasioGroup1.Items.Clear; ShowMessage('Тест окончен. Правильных ответов ' + IntToStr(QRights)); Exit; End; // Выводим след. вопрос Memo1.Lines.Text := Q[AQuestion].Text; For I := 0 To 3 Do RadioGroup1.Items[i] := Q[AQuestion].Answers[i]; RadioGroup1.ItemIndex := -1; end; |
#3
|
||||
|
||||
да по размеру то же самое получается ! почти, что то я непойму вашего кода , новичёк в делфи не судите строго
Код:
type TQuestion = record //что это означает? Text : String; Answers : Array [0..3] Of String; RightAnswer : Integer; // 0.. 3 end; const Q : Array [1..10] Of TQuestion = ((Text: 'Текст вопроса 1', Answers:('Ответ1','Ответ2','Ответ3','Ответ4'),0), // первый вопрос. и так всего 10 вопросов ...); procedure TForm1.btStartClick(Sender : TObject); begin AQuestion := 0; QRights := 0; // что это означает? btNextClick(Self); // это следующий вопрос?? end; procedure TForm1.btNextClick(Sender : TObject); var I : Integer; begin // Если > 0 то забираем ответ. If AQuestion > 0 Then If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights); // обяъсните здесь как // Если > 10, то тест заеончен - выводим результат Inc(AQuestion); If AQuestion > 10 Then Begin Memo1.Lines.Text := ''; //здесь как бы лог ведётся ?? RasioGroup1.Items.Clear; ShowMessage('Тест окончен. Правильных ответов ' + IntToStr(QRights)); Exit; End; // Выводим след. вопрос Memo1.Lines.Text := Q[AQuestion].Text; For I := 0 To 3 Do RadioGroup1.Items[i] := Q[AQuestion].Answers[i]; RadioGroup1.ItemIndex := -1; |
#4
|
|||
|
|||
TQuestion = record //что это означает?
Это опредедление пользовательской структуры данных. QRights := 0; // что это означает? Инициализация переменной. Здесь будет считаться кол-во правильных ответов btNextClick(Self); // это следующий вопрос?? Ага, оно самое. Обработчик кнопки перехода к сл. вопросу. If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights); // обяъсните здесь как Читаем про соотв. компонент. В св-ве ItemIndex "лежит" номер выбранной радиокнопки из всех в группе. Тупо сравниваем его с номером прав. ответа. Memo1.Lines.Text := ''; //здесь как бы лог ведётся ?? Нет. Это просто поле, где выводится текст вопроса. В данном месте нам надо его очистить. Да, еше надо поправить кусочек кода: Код:
// Выводим след. вопрос Memo1.Lines.Text := Q[AQuestion].Text; RadioGroup1.Items.Clear; For I := 0 To 3 Do RadioGroup1.Items.Add(Q[AQuestion].Answers[i]); RadioGroup1.ItemIndex := -1; |
#5
|
||||
|
||||
хорошо, завтро посмотрю, спасибо
|
#6
|
|||
|
|||
Ну ты нахал!!!
Одолжение мне делаешь? |
#7
|
||||
|
||||
почему нахал то?
а может лучше мой код доделать? просто он мне гораздо понятнее |
#8
|
||||
|
||||
у меня есть готовая прога на Builder'е с базой данных на ADO, там два уровня, если набираешь определённое кол-во балов в первом уровне, то пускает на второй, если не набрал - то ламер ))) для какова-то студента писал, могу переписать на Delphi и поделицца
P.S. код элементарный, писался для студента-рас..дяя Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel |
#9
|
||||
|
||||
Цитата:
было бы круто, но прога уже есть, осталось только доделать, зачем новую создавать то? если ты хорошо разбираешся доделай мою пожалуйста, главное чтобы вопросы с ответами при нажатии "далее" обновлялись и в конце результат правильных ответов был и код простенький а не на больше 100 строк ну я про основной |