unit Unit9;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type Vopros = record    //объявляем тип запись где будем хранить вопросы и варианты ответов к ним
Vopros:string;//здесь храниться вопрос
VariantOtveta1:string;//здесь храниться вариант ответа 1
VariantOtveta2:string;//здесь храниться вариант ответа 2
VariantOtveta3:string;//здесь храниться вариант ответа 3
VariantOtveta4:string;//здесь храниться вариант ответа 4
Variant1TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
Variant2TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
Variant3TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
Variant4TrueOrFalse:boolean;// хранит значение true если вариант ответа верный иначе хранит false
end ;

type
  TForm9 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Memo4: TMemo;
    Memo5: TMemo;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form9: TForm9;

Number:integer;
  MasVoprosov3 : array[1..5]of Vopros;//объявляем переменную типа массив из 10 элементов типа Vopros
  MasDataOtvetov:array[1..5]of Vopros;// будем хранить в этом массиве ответы пользователя
implementation


uses Unit2;

{$R *.dfm}


procedure TForm9.Button1Click(Sender: TObject);
begin
// кнопка начать тестирование
//сначала наш массив с элементами типа запись с именем vopros мы заполняем 10  вопросами
//заполняем 1 вопрос
MasVoprosov3[1].Vopros:='Дать расшифровку аббревиатуры ROPA';
MasVoprosov3[1].VariantOtveta1:='Remote Optically Pumped Amplifier';
MasVoprosov3[1].VariantOtveta2:='Repeat Optically Pumped Amplifier';
MasVoprosov3[1].VariantOtveta3:='Restore Optically Pumped Amplifier';
MasVoprosov3[1].VariantOtveta4:='Remote Optically Pumped Amplitude';
MasVoprosov3[1].Variant1TrueOrFalse:=true;
MasVoprosov3[1].Variant2TrueOrFalse:=false;
MasVoprosov3[1].Variant3TrueOrFalse:=false;
MasVoprosov3[1].Variant4TrueOrFalse:=false;
//заполняем 2 вопрос
MasVoprosov3[2].Vopros:='Какой химический элемент лежит в основе ROPA усилителей?';
MasVoprosov3[2].VariantOtveta1:='Er';
MasVoprosov3[2].VariantOtveta2:='Cr';
MasVoprosov3[2].VariantOtveta3:='Si';
MasVoprosov3[2].VariantOtveta4:='SiO2';
MasVoprosov3[2].Variant1TrueOrFalse:=true;
MasVoprosov3[2].Variant2TrueOrFalse:=false;
MasVoprosov3[2].Variant3TrueOrFalse:=false;
MasVoprosov3[2].Variant4TrueOrFalse:=false;
//заполняем 3 вопрос
MasVoprosov3[3].Vopros:='На какой длине волны используется ROPA усилители';
MasVoprosov3[3].VariantOtveta1:='1480 нм';
MasVoprosov3[3].VariantOtveta2:='850 нм';
MasVoprosov3[3].VariantOtveta3:='1310 нм';
MasVoprosov3[3].VariantOtveta4:='1650 ни';
MasVoprosov3[3].Variant1TrueOrFalse:=true;
MasVoprosov3[3].Variant2TrueOrFalse:=false;
MasVoprosov3[3].Variant3TrueOrFalse:=false;
MasVoprosov3[3].Variant4TrueOrFalse:=false;
//заполняем 4 вопрос
MasVoprosov3[4].Vopros:='Конфигурация усилителей ROPA бывают';
MasVoprosov3[4].VariantOtveta1:='Встречной накачки';
MasVoprosov3[4].VariantOtveta2:='Попутной накачки';
MasVoprosov3[4].VariantOtveta3:='Накачки по дополнительному волокну';
MasVoprosov3[4].VariantOtveta4:='Постоянной накачки';
MasVoprosov3[4].Variant1TrueOrFalse:=true;
MasVoprosov3[4].Variant2TrueOrFalse:=true;
MasVoprosov3[4].Variant3TrueOrFalse:=false;
MasVoprosov3[4].Variant4TrueOrFalse:=false;
//заполняем 5 вопрос
MasVoprosov3[5].Vopros:='От чего зависит режим работы и выигрыш в перекрываемом расстоянии при использовании ROPA усилителей?';
MasVoprosov3[5].VariantOtveta1:='Требуемой пропускной способности';
MasVoprosov3[5].VariantOtveta2:='Требуемой скорости';
MasVoprosov3[5].VariantOtveta3:='От длины волны';
MasVoprosov3[5].VariantOtveta4:='От окна прозрачности';
MasVoprosov3[5].Variant1TrueOrFalse:=true;
MasVoprosov3[5].Variant2TrueOrFalse:=true;
MasVoprosov3[5].Variant3TrueOrFalse:=false;
MasVoprosov3[5].Variant4TrueOrFalse:=false;

// после того как все вопросы заполнены прячем кнопку 'начать тестирование'
Button1.visible:=false;
Button2.visible:=true;
// выводим первый вопрос и варианты ответов к нему в memo1,memo2,memo3,memo4,memo5
Number:=1;//
memo1.Text:=MasVoprosov3[Number].Vopros;
memo2.Text:=MasVoprosov3[Number].VariantOtveta1;
memo3.Text:=MasVoprosov3[Number].VariantOtveta2;
memo4.Text:=MasVoprosov3[Number].VariantOtveta3;
memo5.Text:=MasVoprosov3[Number].VariantOtveta4;


end;

procedure TForm9.Button2Click(Sender: TObject);
var i:integer;//переменная цикла for
Error:integer;// переменная количества ошибок
ocenka,Stroka:string;// оценка/ строка для вывода
ColVop:integer;//количество  вопросов на которые были даны неправильные ответы
begin
if (Number<>5)then
begin
// сначала запоминаем в массиве MasDataOtvetov ответы данные пользователем
//если пользователь поставил галочку на первом
//варианте ответов запишем true в соответствующюю запись иначе запишем false
//
if(CheckBox1.Checked=true)then MasDataOtvetov[Number].Variant1TrueOrFalse:=true else
MasDataOtvetov[Number].Variant1TrueOrFalse:=false;
//если пользователь поставил галочку на 2
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox2.Checked=true)then MasDataOtvetov[Number].Variant2TrueOrFalse:=true else
MasDataOtvetov[Number].Variant2TrueOrFalse:=false;
//если пользователь поставил галочку на 3
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox3.Checked=true)then MasDataOtvetov[Number].Variant3TrueOrFalse:=true else
MasDataOtvetov[Number].Variant3TrueOrFalse:=false;
//если пользователь поставил галочку на 4
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox4.Checked=true)then MasDataOtvetov[Number].Variant4TrueOrFalse:=true else
MasDataOtvetov[Number].Variant4TrueOrFalse:=false;
//закончили запись данных ответов в массив
// увеличиваем номер вопроса на единицу если это не десятый вопрос
 Number:=Number+1;
// очищаем CheckBox1,CheckBox2,CheckBox3,CheckBox4
CheckBox1.Checked:=false;
CheckBox2.Checked:=false;
CheckBox3.Checked:=false;
CheckBox4.Checked:=false;
//выводим следующий вопрос и варианты ответа к нему
memo1.Text:=MasVoprosov3[Number].Vopros;
memo2.Text:=MasVoprosov3[Number].VariantOtveta1;
memo3.Text:=MasVoprosov3[Number].VariantOtveta2;
memo4.Text:=MasVoprosov3[Number].VariantOtveta3;
memo5.Text:=MasVoprosov3[Number].VariantOtveta4;
end
else
begin
// записываем ответы данные пользователем на последний вопрос
if(CheckBox1.Checked=true)then MasDataOtvetov[Number].Variant1TrueOrFalse:=true else
MasDataOtvetov[Number].Variant1TrueOrFalse:=false;
//если пользователь поставил галочку на 2
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox2.Checked=true)then MasDataOtvetov[Number].Variant2TrueOrFalse:=true else
MasDataOtvetov[Number].Variant2TrueOrFalse:=false;
//если пользователь поставил галочку на 3
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox3.Checked=true)then MasDataOtvetov[Number].Variant3TrueOrFalse:=true else
MasDataOtvetov[Number].Variant3TrueOrFalse:=false;
//если пользователь поставил галочку на 4
//варианте ответов запишем true в соответствующюю запись иначе запишем false
if(CheckBox4.Checked=true)then MasDataOtvetov[Number].Variant4TrueOrFalse:=true else
MasDataOtvetov[Number].Variant4TrueOrFalse:=false;
//закончили запись данных ответов в массив
Button2.Visible:=false;// прячем кнопку 'следующий вопрос'
// обнуляем переменную ошибок
Error:=0;
//подсчитываем количество не правильных ответов
for i:= 1 to 5 do
 begin
   //при сравнении записей двух массивов если записи разные то переменной ошибок Error
   //добавляем единицу
  if (MasVoprosov3[i].Variant1TrueOrFalse<>MasDataOtvetov[i].Variant1TrueOrFalse)or
  (MasVoprosov3[i].Variant2TrueOrFalse<>MasDataOtvetov[i].Variant2TrueOrFalse)or
  (MasVoprosov3[i].Variant3TrueOrFalse<>MasDataOtvetov[i].Variant3TrueOrFalse)or
  (MasVoprosov3[i].Variant4TrueOrFalse<>MasDataOtvetov[i].Variant4TrueOrFalse)then
    begin
    Error:=Error+1;
    end;
 end;
//подсчитываем оценку
if (Error=0) then ocenka:='5';
if (Error=1) then ocenka:='4';
if (Error=2) then ocenka:='3';
if (Error=3) then ocenka:='2';
if (Error=4) then ocenka:='2';
if (Error=5) then ocenka:='2';
//формируем строку для вывода в сообщение
Stroka:='вы ответили правильно на :'+''+IntToStr(5-Error)+' вопросов,ваша оценка:'+ocenka;
if strtoint(ocenka)>2 then
begin
  unit2.p3:=true;
  unit2.form2.done3.visible:=true;
  unit2.form2.praktika4.Visible:=true;
end;
 //выводим оценку в сообщении
 ShowMessage(Stroka);
 // после закрываем наше приложение закрывая главную форму
  unit2.Form2.ocenka.caption:=('Ваша оценка-' + ocenka);
  Button1.visible:=true;
    Form9.Close;
end;
end;


end.

