Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2016, 18:45   #1
Aleksey1706
Новичок
Джуниор
 
Регистрация: 12.05.2016
Сообщений: 1
По умолчанию объясните как работает программа

Код:
const D_SIZE = 100;   // константа D_SIZE принимает значение 100
type d_item_t = double;   // обьявления типа
type d_list_t = array[1..D_SIZE] of d_item_t; // d_list_t массив типа d_item_t размером 100
type d_comp_t = record  // обьявление дека
  list: d_list_t;
  stack: integer;
  queue: integer;
  count: integer;
end;
 
procedure DInc( var a: integer ); // процедура увеличение дека на 1
begin
  a := a + 1; // увеличение дека на 1
  if a > D_SIZE then a := 1; // если размер дека больше 100, размер дека=1
end;
procedure DDec( var a: integer );// процедура уменьшения дека на 1
begin
  a := a - 1;  //уменьшение дека на 1
  if a < 1 then a := D_SIZE;  // если размер дека меньше 1,размер дека = D_SIZE
end;
 
procedure DReset( var d: d_comp_t );// процедура обнуления дека
begin
  d.stack := 1;
  d.queue := D_SIZE;
  d.count := 0;
end;
function DPushFront( var d: d_comp_t; const item: d_item_t ): boolean;// процедура добавления елемента вверх дека
begin
  if d.count = D_SIZE then // если количество елментов = 100
    DPushFront := false // то елемент не добавлять
  else begin  // иначе
    d.count := d.count + 1; // увеличение количества на 1
    d.list[ d.queue ] := item;  
    DDec(d.queue);
    DPushFront := true; // добавить елемент в верхушку дека
  end;
end;  
function DPushBack( var d: d_comp_t; const item: d_item_t ): boolean;// процедура добавления елемента вниз дека
begin
  if d.count = D_SIZE then // если количество елментов = 100
    DPushBack:= false // то елемент не добавлять
  else begin  // иначе
    d.count := d.count + 1; // увеличение количества на 1
    d.list[ d.stack ] := item;  
    DInc(d.stack);
    DPushBack := true; // добавить елемент вниз дека
  end;
end;  
function DPopFront( var d: d_comp_t; var r: d_item_t ): boolean;// процедура удаления елемента вверху дека
begin
  if d.count = 0 then // если количество елментов = 0
    DPopFront:= false // то елемент не удалять
  else begin
    DInc(d.queue);
    d.count := d.count - 1; // уменьшение количества на 1
    r := d.list[ d.queue ];
    DPopFront := true;  // удалить елемент вверху дека
  end;
end;
function DPopBack( var d: d_comp_t; var r: d_item_t ): boolean;// процедура удаление елемента внизу дека
begin
  if d.count = 0 then // если количество елментов = 0
    DPopBack:= false  // то елемент не удалять
  else begin
    DDec(d.stack);
    d.count := d.count - 1; // уменьшение количества на 1
    r := d.list[ d.stack ];  // удалить елемент внизу дека
    DPopBack := true;
  end;
end;
 
var d: d_comp_t ;
 
var tmp: double;
begin
 
DReset(d);  // процедура обнуления дека
DPushBack(d , 1);  // процедура добавления елемента вниз дека
DPushBack(d , 2);  // процедура добавления елемента вниз дека
DPushBack(d , 3);  // процедура добавления елемента вниз дека
DPushFront(d , 4); // процедура добавления елемента вверх дека
DPushFront(d , 5); // процедура добавления елемента вверх дека
DPushFront(d , 6); // процедура добавления елемента вверх дека
 
DPopFront(d , tmp); writeln( tmp ); // процедура удаления елемента вверху дека
DPopBack(d , tmp); writeln( tmp );  // процедура удаление елемента внизу дека
DPopFront(d , tmp); writeln( tmp ); // процедура удаления елемента вверху дека
DPopFront(d , tmp); writeln( tmp ); // процедура удаления елемента вверху дека
DPopFront(d , tmp); writeln( tmp ); // процедура удаления елемента вверху дека
DPopFront(d , tmp); writeln( tmp ); // процедура удаление елемента внизу дека
DPopBack(d , tmp); writeln( tmp );  // процедура удаление елемента внизу дека
DPopBack(d , tmp); writeln( tmp );  // процедура удаление елемента внизу дека
 
 
end.

Последний раз редактировалось Аватар; 12.05.2016 в 18:54.
Aleksey1706 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объясните как работает программа. fr0st1k123 Общие вопросы C/C++ 3 24.11.2015 17:01
Объясните, как работает программа Alexandr- Помощь студентам 0 25.05.2013 05:02
объясните как работает программа vitaliy089 Помощь студентам 0 15.05.2012 21:35
Объясните, как работает программа grovail Общие вопросы C/C++ 1 24.12.2011 11:33