Программа должна иметь интерфейс на основе формы (FormsABC). Выводить содержимое очереди в ListBox. 

При реализации очереди предусмотреть возможность: 

а) добавления в конец очереди; 

б) удаление элемента из начала очереди; 

в) возможность редактирования первого и последнего элементов очереди. 

Организовать очередь дисциплин: хранить название дисциплины и количество часов (Пользователь вводит информацию). 

В файле прикреплена часть программы, желательно, использовать эти наработки. Если быть точнее, то не работает кнопка изменения первого элемента в очереди.

uses

  formsABC;

type

  stack = ^Tstack;

  Tstack = record

    next: stack;

    name: string;

    h, i: integer;

  end;

var

  head, tail, tmp, tm: stack;

  L: listbox;

  bt, bt1, bt2, bt3: button;

  f: field;

  hour: integerfield;

  s: array of string;

  a, i: integer;

procedure add(head: stack; name: string; h: integer; tail: stack);

begin

  new(tmp);

  L.Items.Add(name + ' - ' + inttostr(h));

  tmp^.name := name;

  tmp^.h := h;

  tmp^.next := nil; 

  if head

  begin

    tail^.next := tmp;

    tail := tmp;   

  end

  else

  begin

    head := tmp;

    tail := tmp;   

  end;

end;

procedure addy;

begin

  add(head, f.text, hour.Value, tail);

end;

procedure dell(head: stack);

begin

  if head

  begin

    tmp := head;

    head := head^.next;

    dispose(tmp);

  end;

end;

procedure delly;

begin

  dell(head);

  L.Items.RemoveAt(0);

end;

procedure add1(head: stack; name: string; h: integer; tail: stack);

begin

  new(tm);

  tm^.name := name;

  tm^.h := h;

  tm^.next := nil; 

  if head

  begin

    tail^.next := tm;

    tail := tm;   

  end

  else

  begin

    head := tm;

    tail := tm;   

  end;

  L.Items.Add(name + ' - ' + inttostr(h));

end;

procedure add2;

begin

  add1(head, f.text, hour.Value, tail);

end;

procedure editf1;

begin

  delly;

  add2;

end;

procedure dele(var head: stack);

begin

  if head

  begin

  tmp := head;

  head := tmp^.next;

  Dispose(tmp);

  end;

end;

procedure del;

begin

  dele(head);

  l.Items.RemoveAt(l.Items.Count - 1)

end;

procedure editl1;

begin

  del;

  addy;

end;

begin

  L := new ListBox();

  bt := new Button('Добавить');

  emptyline;

  f := new Field('Название дисциплины');

  hour := new IntegerField('Кол-во часов');

  emptyline;

  bt1 := new Button('Удалить');

  bt3 := new Button('Изменить первый элемент');

  bt2 := new Button('Изменить последний элемент');

  bt.Click += addy;

  bt1.Click += delly;

  bt2.Click += editl1;

  bt3.Click += editf1;

end.

6 лет назад
guest_15438408619079
6 лет в сервисе
Был
6 лет назад

Заявки фрилансеров

Нет заявок фрилансеров