скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Линейные списки. Стек. Дек. Очередь

  Memo1.Lines.Add('   Кнопки "<< и >>" служат для перемещения курсора в деке.');

  Memo1.Lines.Add('   а) Переместитесь влево на 2 элемента;');

  Memo1.Lines.Add('   б Переместитесь вправо на 4 элемента;');

  Memo1.Lines.Add('   Кнопка "Добавить" служит для добавления элемента в дек.');

  Memo1.Lines.Add('   а) Добавьте 1, 3 элементом число 11;');

  Memo1.Lines.Add('   б) Добавьте 5, 6 элементом число 88;');

  Memo1.Lines.Add('   Кнопка "Удалить" служит для удаления элемента из дека.');

  Memo1.Lines.Add('   а) Удалите 2, 4 элементы;');

  Memo1.Lines.Add('   б) Добавте 6, 7 элементы;');

  Memo1.Lines.Add('');

  Memo1.Lines.Add('3. На листе формата А4, опишите ход проделанной работы.');

  Memo1.Lines.Add('   Ответьте на поставленные вопросы:');

  Memo1.Lines.Add('   1) Как удаляется и добавляется элементы в дек?');

  Memo1.Lines.Add('   2) В чем сходны и различны дек, стек и двунаправленный список?');

end;

procedure TForm1.N71Click(Sender: TObject);

begin

  Memo1.Clear;

  Memo1.Lines.Add('                      Лабораторная работа №7.');

  Memo1.Lines.Add('                               "Тест"');

  Memo1.Lines.Add('______________________________________________________________');

  Memo1.Lines.Add('1. Повторите весь теоретический материал.');

  Memo1.Lines.Add('');

  Memo1.Lines.Add('2. Поработайте с демонстрационной программой.');

  Memo1.Lines.Add('');

  Memo1.Lines.Add('3. Запустите тест (сервис\тест или Ctrl + T).');

  Memo1.Lines.Add('   Ответьте на поставленные вопросы теста.');

  Memo1.Lines.Add('');

  Memo1.Lines.Add('4. Результаты теста сообщить преподавателю.');

end;

procedure TForm1.N9Click(Sender: TObject);

begin

  Form18.Show;

end;

end.

unit Unit2; //Формирование списков

interface

uses SysUtils, Windows, Dialogs;

type

List = ^Spisok;  //Однонаправленный

Spisok = record

           Info: Integer;

           Next: List;

         end;

ListTwo = ^SpisokTwo;  //Двунаправленный

SpisokTwo = record

              Info: Integer;

              Next: ListTwo;

              Prev: ListTwo;

            end;

procedure CreateLists;

procedure AddToList(X: Integer; var PointerEndList: List);

procedure AddToListAfterPos(X: Integer; Position: Integer);

procedure DeleteFromList(Position: Integer);

procedure AddToListTwo(X: Integer; var PointerEndListTwo: ListTwo);

procedure AddToListTwoAfterPos(X: Integer; Position: Integer);

procedure DeleteFromListTwo(Position: Integer);

procedure AddToQueue(X: Integer; var PointerEndQueue: List);

procedure AddToEndQueue(X: Integer);

function GetQueue(var PointerBegin: List): Integer;

procedure AddToStack(X: Integer; var PointerStack: List);

function GetStack(var PointerStack: List): Integer;

procedure AddToDeck(X: Integer;

           var PointerDeckBegin, PointerDeckEnd: ListTwo; Flag: Integer);

function GetDeckBegin(var PointerDeckBegin: ListTwo): Integer;

function GetDeckEnd(var PointerDeckEnd: ListTwo): Integer;

procedure DestroyList(PointerBegin: List);

procedure DestroyListTwo(PointerBegin: ListTwo);

procedure AddToRoundList(X: Integer; var PointerRoundList: List);

procedure DeleteFromRoundList(Position: Integer);

procedure DestroyRoundList(var PointerRoundList: List);

implementation

uses Unit1;

procedure DestroyList(PointerBegin: List);

var

  q: List;

begin

  while PointerBegin <> nil do

     begin

       q := PointerBegin;

       PointerBegin := PointerBegin^.Next;

       if q <> nil then Dispose(q);

     end;

end;

procedure DestroyListTwo(PointerBegin: ListTwo);

var

  q: ListTwo;

begin

  while PointerBegin <> nil do

     begin

       q := PointerBegin;

       PointerBegin := PointerBegin^.Next;

       if q <> nil then Dispose(q);

     end;

end;

procedure DestroyRoundList(var PointerRoundList: List);

var

  q, t: List;

begin

  q := PointerRoundList^.Next;

  PointerRoundList^.Next := nil;

  while q <> nil do

    begin

      t := q;

      q := q^.Next;

      if t <> nil then Dispose(t);

    end;

  PointerRoundList := nil;

end;

procedure AddToList(X: Integer; var PointerEndList: List); //Добавить элемент в

        //конец списка (PointerEnd - указатель на последний элемент списка)

begin

  if PointerEndList = nil then  // Если первый элемент еще не существует

    begin

      New(PointerEndList);

      PointerEndList^.Info := X;

      PointerEndList^.Next := nil;

    end

  else

    begin

      New(PointerEndList^.Next);

      PointerEndList := PointerEndList^.Next;

      PointerEndList^.Info := X;

      PointerEndList^.Next := nil;

    end;

end;

procedure AddToListAfterPos(X: Integer; Position: Integer);

var                  //Добавить элемент в список после Position

  i: Integer;

  q, qNew: List;

begin

  if Position = 0 then // Если позиция = 0, то добавляем в начало

    begin

      New(qNew);

      qNew^.Info := X;

      qNew^.Next := ListBegin;

      ListBegin := qNew;

    end

  else

    begin

      q := ListBegin;

      i := 0;

      while (i < Position) and (q <> nil) do // Ищем элемент после которого

                                             // нужно вставить

        begin

          q := q^.Next;

          Inc(i);

        end;

      if q <> nil then  // Если элемент существует то вставляем

        begin

          New(qNew);

          qNew^.Info := X;

          qNew^.Next := q^.Next;

          q^.Next := qNew;

        end

      else ShowMessage('Элемент, после которого хотите вставить, удален');

    end;

end;

procedure AddToRoundList(X: Integer; var PointerRoundList: List);

var qRound: List;

begin

  if PointerRoundList = nil then

    begin

      New(PointerRoundList);

      PointerRoundList^.Info := X;

      PointerRoundList^.Next := PointerRoundList;

      RoundList := PointerRoundList;

    end

  else

    begin

      New(qRound);

      qRound^.Info := X;

      qRound^.Next := PointerRoundList^.Next;

      PointerRoundList^.Next := qRound;

    end;

  PointerRoundList := PointerRoundList^.Next;

end;

procedure DeleteFromRoundList(Position: Integer);

var

  q, h: List;

  i: Integer;

begin

  if RoundList^.Next = RoundList then //один элемент в списке

    begin

      if RoundList <> nil then Dispose(RoundList);

      RoundList := nil;

    end

  else // не один элемент в списке

    begin

      i := 1;

      q := RoundList;

      while i < RoundListPos do

        begin

          Inc(i);

          q := q^.Next;

        end;

      if i <> 1 then

        begin

          h := q^.Next;

          q^.Next := h^.Next;

          if h <> nil then Dispose(h);

        end

      else

        begin

          q := RoundList^.Next;

          while q^.Next <> RoundList do q := q^.Next;

          h := q^.Next;

          q^.Next := h^.Next;

          if h <> nil then Dispose(h);

          RoundList := q^.Next;

        end;

    end;

  if RoundList <> nil then

    begin

      q := RoundList^.Next;

      i := 1;

      while q <> RoundList do

        begin

          Inc(i);

          q := q^.Next;

        end;

      if i = RoundListPos then

        begin

          RoundListPos := 0;

          Form1.Image7.Left := 9;

        end;

    end;

end;

procedure DeleteFromList(Position: Integer); //Удаляет элемент под

                                             //номером Position

var

  i: Integer;

  q, r: List;

begin

  q := ListBegin;

  if q <> nil then // Если список не пуст, то

    begin

      if Position = 0 then //Если позиция = 0, то удаляем первый элемент

        begin

          ListBegin := q^.Next;

          if q <> nil then Dispose(q);

        end

      else

        begin

          i := 0;

          while (i < Position - 1) and (q <> nil) do //Ищем элемент после

                                  //которого нужно удалить

            begin

              q := q^.Next;

              Inc(i);

            end;

         r := q^.Next;

         if r <> nil then //Если удаляемый элемент существует, то удаляем его

            begin

              q^.Next := r^.Next;

              if r <> nil then Dispose(r);

            end

          else ShowMessage('Элемент уже не существует');

        end;

    end

  else

    begin

      ShowMessage('Список пуст');

      Form1.Image1.Hide;

    end;

end;

procedure AddToListTwo(X: Integer; var PointerEndListTwo: ListTwo); //Добавить элемент в

        //конец дв-списка (PointerEnd - указатель на последний элемент списка)

begin

  if PointerEndListTwo = nil then //Если список еще не существует или пуст,

                                  //добавляем в начало

    begin

      New(PointerEndListTwo);

      PointerEndListTwo^.Info := X;

      PointerEndListTwo^.Next := nil;

      PointerEndListTwo^.Prev := nil;

    end

  else

    begin

      New(PointerEndListTwo^.Next);

      PointerEndListTwo := PointerEndListTwo^.Next;

      PointerEndListTwo^.Info := X;

      PointerEndListTwo^.Next := nil;

      PointerEndListTwo^.Prev := nil;

    end;

end;

procedure AddToListTwoAfterPos(X: Integer; Position: Integer);

var                  //Добавить элемент в двунап. список после Position

  i: Integer;

  q, qNew: ListTwo;

begin

  if Position = 0 then //Если позиция = 0, вставляем в начало

    begin

      New(qNew);

      qNew^.Info := X;

      qNew^.Next := ListTwoBegin;

      ListTwoBegin := qNew;

    end

  else

    begin

      q := ListTwoBegin;

      i := 0;

      while (i < Position) and (q <> nil) do //Ищем элемент после которого

                                             //нужно вставить

        begin

          q := q^.Next;

          Inc(i);

        end;

      if q <> nil then  // Если элемент существует то вставляем

        begin

          New(qNew);

          qNew^.Info := X;

          qNew^.Next := q^.Next;

          qNew^.Prev := q;

          q^.Next := qNew;

        end

      else ShowMessage('Элемент, после которого хотите вставить, удален');

    end;

end;

procedure DeleteFromListTwo(Position: Integer); //Удаляет элемент

                                        //под номером Position

var

  i: Integer;

  q, r: ListTwo;

begin

  q := ListTwoBegin;

  if q <> nil then //Если удаляемый элемент существует, то

    begin

      if Position = 0 then //Если позиция = 0, то удаляем первый элемент

        begin

          ListTwoBegin^.Prev := nil;

          ListTwoBegin := q^.Next;

          if q <> nil then Dispose(q);

        end

      else

        begin

          i := 0;

          while (i < Position - 1) and (q <> nil) do //Ищем элемент

                     // после которого нужно удалить

            begin

              q := q^.Next;

              Inc(i);

            end;

          r := q^.Next;

          if r <> nil then //Если он существует, то удаляем его

            begin

              if r^.Next <> nil then r^.Next^.Prev := q;

              q^.Next := r^.Next;

              if r <> nil then Dispose(r);

            end

          else ShowMessage('Элемент уже не существует');

        end;

    end

  else

    begin

      ShowMessage('Список пуст');

      Form1.Image2.Hide;

    end;

end;

procedure AddToQueue(X: Integer; var PointerEndQueue: List); //Добавить элемент

        //в конец очереди (PointerEnd - указатель на последний элемент очереди)

begin

  if PointerEndQueue = nil then //Если очередь еще не существует или пуста

                                //добавляем в начало

    begin

      New(PointerEndQueue);

      PointerEndQueue^.Info := X;

      PointerEndQueue^.Next := nil;

    end

  else

    begin

      New(PointerEndQueue^.Next);

      PointerEndQueue := PointerEndQueue^.Next;

      PointerEndQueue^.Info := X;

      PointerEndQueue^.Next := nil;

    end;

end;

function GetQueue(var PointerBegin: List): Integer; //ф-ия получает элемент из

      // очереди и возвращает указатель на начало очереди

var

  rQueue: List;

begin

  rQueue := PointerBegin;

  if rQueue <> nil then //Если очередь не пуста

    begin

      PointerBegin := PointerBegin^.Next;

      Result := rQueue^.Info;

      if rQueue <> nil then Dispose(rQueue);

    end

  else

    begin

      ShowMessage('Очередь пуста');

      Form1.Edit3.Text := '';

      Form1.Button10.Enabled := False;

      Form1.Button11.Enabled := False;

      Form1.Button12.Enabled := False;

      Form1.Image3.Hide;

    end;

end;

procedure AddToEndQueue(X: Integer);

var

  Info: Integer;

  rQueue, qQueue: List;

  FlagList: Boolean;

begin

  FlagList := True; //Для выделения первого элемента

  qQueue := nil;

  rQueue := nil;

  while QueueBegin <> nil do //Ищем указатель на последний элемент очереди

    begin

      Info := GetQueue(QueueBegin);

      AddToQueue(Info, rQueue); //Формируем новую очередь из элементов старой

                                //очереди, чтобы не потерять ее

      if FlagList then        /////////////////////////////////////

        begin                 //                                 //

          qQueue := rQueue;   // формируем указатель на очередь  //

          FlagList := False;  //                                 //

        end;                  // //////////////////////////////////

    end;

  AddToQueue(X, rQueue);

  if qQueue <> nil then QueueBegin := qQueue // определяем указатель на очередь

  else QueueBegin := rQueue;                 //////////////////////////////////

end;

procedure AddToStack(X: Integer; var PointerStack: List); //Добавить элемент в

        //стек (PointerStack - указатель на стек)

var

  Stacks: List;

begin

  if PointerStack = nil then //Если стек пуст, то формируем его

    begin

      New(PointerStack);

      PointerStack^.Info := X;

      PointerStack^.Next := nil;

    end

  else //иначе добавляем элемент

    begin

      New(Stacks);

      Stacks^.Info := X;

      Stacks^.Next := PointerStack;

      PointerStack := Stacks;

    end;

end;

function GetStack(var PointerStack: List): Integer; //ф-ия получает элемент из

      // стека и возвращает указатель на стек

var

  rStack: List;

begin

  rStack := PointerStack;

  if rStack <> nil then //Если стек еще не пуст

    begin

      PointerStack := PointerStack^.Next;

      Result := rStack^.Info;

      if rStack <> nil then Dispose(rStack);

    end

  else

    begin

      ShowMessage('Стек пуст');

      Form1.Button14.Enabled := False;

      Form1.Image4.Hide;

    end;

end;

procedure AddToDeck(X: Integer; var PointerDeckBegin, PointerDeckEnd: ListTwo;

           Flag: Integer); //Добавить элемент в дек

                           //PointerDeckBegin - указатель на начало дека

                           //PointerDeckEnd - указатель на конец дека

var

  Decks: ListTwo;

begin

  if PointerDeckBegin = nil then //Если дек пуст, то формируем его

    begin

      New(PointerDeckBegin);

      PointerDeckBegin^.Info := X;

      PointerDeckBegin^.Next := nil;

      PointerDeckBegin^.Prev := nil;

      PointerDeckEnd := PointerDeckBegin;

    end

  else //иначе добавляем элемент

    begin

      if Flag = 0 then  //добавляем в начало

        begin

          New(Decks);

          Decks^.Info := X;

          Decks^.Next := PointerDeckBegin;

          Decks^.Prev := nil;

          PointerDeckBegin^.Prev := Decks;

          PointerDeckBegin := Decks;

        end

      else  //добавлям в конец

        begin

          New(Decks);

          Decks^.Info := X;

          Decks^.Next := nil;

          Decks^.Prev := PointerDeckEnd;

          PointerDeckEnd^.Next := Decks;

          PointerDeckEnd := Decks;

        end;

    end;

end;

function GetDeckBegin(var PointerDeckBegin: ListTwo): Integer;

   //ф-ия получает элемент из начала дека и возвращает указатель на начало дека.

var

  q: ListTwo;

begin

  if PointerDeckBegin <> nil then //Если дек не пуст

    begin

      Result := PointerDeckBegin^.Info;

      q := PointerDeckBegin;

      PointerDeckBegin := q^.Next;

      if PointerDeckBegin <> nil then PointerDeckBegin^.Prev := nil;

      if q <> nil then Dispose(q);

    end

  else

    begin

      ShowMessage('Дек пуст');

      Form1.Edit5.Text := '';

      Form1.Button18.Enabled := False;

      Form1.Button19.Enabled := False;

      Form1.Button20.Enabled := False;

      Form1.Image5.Hide;

      Form1.Image6.Hide;

    end;

end;

function GetDeckEnd(var PointerDeckEnd: ListTwo): Integer;

   //ф-ия получает элемент из конца дека и возвращает указатель на конец дека.

var

  q: ListTwo;

begin

  if PointerDeckEnd <> nil then //Если дек не пуст

    begin

      Result := PointerDeckEnd^.Info;

      q := PointerDeckEnd;

      PointerDeckEnd := q^.Prev;

      if PointerDeckEnd <> nil then PointerDeckEnd^.Next := nil;

      if q <> nil then Dispose(q);

    end

  else

    begin

      ShowMessage('Дек пуст');

      Form1.Edit5.Text := '';

      Form1.Button18.Enabled := False;        

      Form1.Button19.Enabled := False;

      Form1.Button20.Enabled := False;

      Form1.Image5.Hide;

      Form1.Image6.Hide;

    end;

end;

procedure CreateLists; //процедура создания всех списков

var

  i: Integer;

  X: Integer;

  Uk, q: List;

  UkTwo, qTwo: ListTwo;

  UkQueue, qQueue: List;

  qStack: List;

  qDeckBegin, qDeckEnd: ListTwo;

begin

  X := Random(101); //Определяем значение первого элемента

  Uk := nil;            //////////////////////////

  q := nil;             //                      //

  UkTwo := nil;         // НАЧАЛЬНЫЕ УСТАНОВКИ: //

  qTwo := nil;          //                      //

  UkQueue := nil;       // все указатели = nil  //

  qQueue := nil;        //                      //

  qStack := nil;        //                      //

  qDeckBegin := nil;    //                      //

  qDeckEnd := nil;      //////////////////////////

// Destroy for every lists

  if ListBegin <> nil then DestroyList(ListBegin);

  if ListTwoBegin <> nil then DestroyListTwo(ListTwoBegin);

  if QueueBegin <> nil then DestroyList(QueueBegin);

  if Stack <> nil then DestroyList(Stack);

  if DeckBegin <> nil then DestroyListTwo(DeckBegin);

  if RoundList <> nil then DestroyRoundList(RoundList);

  AddToList(X, Uk);                        //

  AddToListTwo(X, UkTwo);                  // Добавляем Х в

  AddToQueue(X, UkQueue);                  // каждый список

  AddToStack(X, qStack);                   //

  AddToDeck(X, qDeckBegin, qDeckEnd, 0);   //

  AddToRoundList(X, RoundList);            ///////////////////

  Unit1.Form1.Edit6.Text := IntToStr(X);

  q := Uk;            //

  qTwo := UkTwo;      // Формируем указатели на начало списков

  qQueue := UkQueue;  //

  for i :=  to 9 do       //Дальнейшее формирование списков

    begin

      X := Random(101);

      AddToList(X, q);

      AddToListTwo(X, qTwo);

      AddToQueue(X, qQueue);

      AddToStack(X, qStack);

      AddToDeck(X, qDeckBegin, qDeckEnd, 0);

      AddToRoundList(X, RoundList);

      Unit1.Form1.Edit6.Text := Unit1.Form1.Edit6.Text + ' ' + IntToStr(X);

    end;

  ListBegin := Uk;          //////////////////////////////////////

  ListTwoBegin := UkTwo;    //                                  //

  QueueBegin := UkQueue;    //                                  //

  Stack := qStack;          //  Определяем указатели все списки //

  DeckBegin := qDeckBegin;  //                                  //

  DeckEnd := qDeckEnd;      //                                  //

  RoundList := RoundList^.Next  //////////////////////////////////

end;

end.

unit Unit16; //Тест

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, ExtCtrls;

type

  TForm16 = class(TForm)

    Memo1: TMemo;

    Panel1: TPanel;

    Button1: TButton;

    RadioGroup1: TRadioGroup;

    Button2: TButton;

    procedure RadioGroup1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form16: TForm16;

  NumberQuestion: Integer = 0;

  NumberTrueAnswer: Integer = 0;

  ff: Boolean = True;

implementation

uses Unit1, Un18_Lab;

{$R *.DFM}

procedure TForm16.RadioGroup1Click(Sender: TObject);

begin

  Button1.Enabled := True;

  Button1.SetFocus;

end;

procedure TForm16.Button2Click(Sender: TObject);

begin

  Form16.Hide;

  Form1.Show;

end;

procedure TForm16.Button1Click(Sender: TObject);

begin

  Memo1.Lines.Clear;

  Button1.Enabled := False;

  Inc(NumberQuestion);

  case NumberQuestion of

    1:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Однонаправленный список - это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Список, элементы которого имеют связь со следующим и предыдущим элементом');

        RadioGroup1.Items.Add('Список, элементы которого имеют связь со следующим элементом');

        RadioGroup1.Items.Add('Список, элементы которого не имеют связи');

      end;

    2:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Если элемент содержит ссылки на следующий и предыдущий элемент, то это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('однонаправленный список');

        RadioGroup1.Items.Add('двунаправленный список');

        RadioGroup1.Items.Add('очередь');

        RadioGroup1.Items.Add('стек');

        RadioGroup1.Items.Add('дек');

        RadioGroup1.Items.Add('циклический список');

      end;

    3:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Куда добавляется элемент в двунаправленный список?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('В начало');

        RadioGroup1.Items.Add('В конец');

        RadioGroup1.Items.Add('В любое другое место');

      end;

    4:

      begin

        if RadioGroup1.ItemIndex = 2 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Чем отличается однонаправленный список от двунаправленного?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Существует связь с предыдущим элементом');

        RadioGroup1.Items.Add('Не существует связь с предыдущим элементом');

        RadioGroup1.Items.Add('Не отличаются');

      end;

    5:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Какой элемент считывается из стека?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Последний');

        RadioGroup1.Items.Add('Любой');

        RadioGroup1.Items.Add('Первый');

      end;

    6:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Чем отличается дек от стека?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('Добавление в любом место. Удаление из начала');

        RadioGroup1.Items.Add('Добавление в начало. Удаление из любого места');

        RadioGroup1.Items.Add('Все включения исключения происходят на обоих его концах');

      end;

    7:

      begin

        if RadioGroup1.ItemIndex = 2 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Откуда считывается элемент из очереди?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('С конца');

        RadioGroup1.Items.Add('С начала');

        RadioGroup1.Items.Add('Из люього места');

      end;

    8:

      begin

        if RadioGroup1.ItemIndex = 1 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Куда добавляется элемент в стек?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('В конец');

        RadioGroup1.Items.Add('В начало');

        RadioGroup1.Items.Add('В любое место');

      end;

    9:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Какую ссылку содержит последний элемент циклического списка?');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('На первый элемент');

        RadioGroup1.Items.Add('На предыдущий элемент');

        RadioGroup1.Items.Add('NIL');

      end;

    10:

      begin

        if RadioGroup1.ItemIndex = 0 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Если все включения и исключения происходят на одном конце списка, то это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('однонаправленный список');

        RadioGroup1.Items.Add('двунаправленный список');

        RadioGroup1.Items.Add('очередь');

        RadioGroup1.Items.Add('стек');

        RadioGroup1.Items.Add('дек');

        RadioGroup1.Items.Add('циклический список');

      end;

    11:

      begin

        if RadioGroup1.ItemIndex = 3 then Inc(NumberTrueAnswer);

        Memo1.Lines.Add('Если последний элемент имеет ссылку на первый элемент, то это ...');

        RadioGroup1.Items.Clear;

        RadioGroup1.Items.Add('однонаправленный список');

        RadioGroup1.Items.Add('двунаправленный список');

        RadioGroup1.Items.Add('очередь');

        RadioGroup1.Items.Add('стек');

        RadioGroup1.Items.Add('дек');

        RadioGroup1.Items.Add('циклический список');

      end;

    12:

      begin

        if RadioGroup1.ItemIndex = 5 then Inc(NumberTrueAnswer);

        Button1.Hide;

        if NumberTrueAnswer >= 10 then ShowMessage('Ваша оценка - ОТЛИЧНО!');

        if (NumberTrueAnswer >= 8) and (NumberTrueAnswer < 10) then ShowMessage('Ваша оценка - ХОРОШО!');

        if (NumberTrueAnswer >= 6) and (NumberTrueAnswer < 8) then ShowMessage('Ваша оценка - ТРИ!');

        if NumberTrueAnswer < 6 then

          begin

            ShowMessage('Тебе однозначно нужно почитать теорию. Твоя оценка - Два!!!');

            ff := False;

          end;

        Form16.Hide;

        Form1.Show;

        if not ff then Form18.Show;

      end;

  end;

end;

procedure TForm16.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  Form16.Hide;

  Form1.Show;

  if not ff then Form18.Show;

end;

end.


Страницы: 1, 2, 3, 4, 5, 6, 7


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.