16 / 16 / 9
Регистрация: 03.06.2011
Сообщений: 59

деки в делфи

19.02.2012, 17:52. Показов 3404. Ответов 4

Студворк — интернет-сервис помощи студентам
Даны два упорядоченных по возрастанию дека. Объединить их в третий дек, упорядоченный по убыванию.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2012, 17:52
Ответы с готовыми решениями:

Деки
Здравствуйте! Есть задание осуществить основные операции с деком. При добавлении элементов в начало или конец дека у меня значения...

Как в Делфи выполнить код, написанный на Делфи, например в поле ввода?
Есть способ в Делфи выполнить код, написанный на Делфи, например в поле ввода?

Здр, пожалуйста попробуйте запутсить .exe написанное на делфи 10 у себя, те у кого делфи 7
и скиньте скрин пожалуйста срочно http://www.fayloobmennik.net/4874373 перед тес как запустить, создайте файлы: 1.txt, 2.txt и key.txt...

4
16 / 16 / 9
Регистрация: 03.06.2011
Сообщений: 59
22.02.2012, 23:47  [ТС]
ну посоветуйте хоть книжку где можно про деки чтото толковое найти)
0
 Аватар для SL1TE
4 / 4 / 2
Регистрация: 06.11.2011
Сообщений: 29
23.02.2012, 00:20
Цитата Сообщение от artUK_off Посмотреть сообщение
ну посоветуйте хоть книжку где можно про деки чтото толковое найти)
Написание Дека(Deque) на Delphi здесь обсуждается дек.
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
26.02.2012, 00:14
artUK_off, предлагаю такое решение. В коде реализованы основные действия с деком и выполнено решение задачи.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
type
  //Тип сновных данных.
  TData = Integer;
  //Тип указателя на элемент дека.
  TPElem = ^TElem;
  //Тип элемента дека.
  TElem = record
    Data : TData;
    PNext, PPrev : TPElem; //Указатели на следующий и предыдущий элементы.
  end;
  //Тип дека.
  TDeck = record
    PFirst, PLast : TPElem; //Указатели на первый и последний элементы дека.
  end;
 
//Добавление элемента в начало дека.
procedure PushF(var aDeck : TDeck; var aPElem : TPElem);
begin
  if aPElem = nil then Exit;
 
  aPElem.PPrev := nil;
  aPElem.PNext := aDeck.PFirst;
  if aDeck.PFirst <> nil then aDeck.PFirst^.PPrev := aPElem;
  aDeck.PFirst := aPElem;
  if aDeck.PLast = nil then aDeck.PLast := aPElem;
end;
 
//Добавление элемента в конец дека.
procedure PushL(var aDeck : TDeck; var aPElem : TPElem);
begin
  if aPElem = nil then Exit;
 
  aPElem.PNext := nil;
  aPElem.PPrev := aDeck.PLast;
  if aDeck.PLast <> nil then aDeck.PLast^.PNext := aPElem;
  aDeck.PLast := aPElem;
  if aDeck.PFirst = nil then aDeck.PFirst := aPElem;
end;
 
//Изъятие элемента из начала дека.
function PopF(var aDeck : TDeck; var aPElem : TPElem) : Boolean;
begin
  Result := False;
  if aDeck.PFirst = nil then Exit;
 
  aPElem := aDeck.PFirst;
  aDeck.PFirst := aPElem^.PNext;
  if aDeck.PFirst <> nil then aDeck.PFirst^.PPrev := nil;
  if aDeck.PLast = aPElem then aDeck.PLast := nil;
  Result := True;
end;
 
//Изъятие элемента из конца дека.
function PopL(var aDeck : TDeck; var aPElem : TPElem) : Boolean;
begin
  Result := False;
  if aDeck.PFirst = nil then Exit;
 
  aPElem := aDeck.PLast;
  aDeck.PLast := aPElem^.PPrev;
  if aDeck.PLast <> nil then aDeck.PLast^.PNext := nil;
  if aDeck.PFirst = aPElem then aDeck.PFirst := nil;
  Result := True;
end;
 
//Удаление дека из памяти.
procedure DeckFree(var aDeck : TDeck);
var
  PDel : TPElem;
begin
  while PopF(aDeck, PDel) do Dispose(PDel);
end;
 
//Распечатка дека в направлении начало - конец.
function DeckPrint(var aDeck : TDeck) : String;
var
  D : TDeck;
  PElem : TPElem;
  i : Integer;
begin
  Result := '';
  D.PFirst := nil;
  D.PLast := nil;
  i := 0;
  while PopF(aDeck, PElem) do begin
    PushL(D, PElem);
    Inc(i);
    if i > 1 then Result := Result + ', ';
    Result := Result + IntToStr(PElem^.Data);
  end;
  aDeck := D;
  if Result = '' then Result := 'Дек пуст.';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  //Основа для установки размера деков.
  M = 10;
var
  D1, D2, D3 : TDeck;
  PElem, PElem1, PElem2 : TPElem;
  F1, F2 : Boolean;
  i, j : Integer;
begin
  Memo1.Lines.Add('--------------------------------------------------');
  //Начальная инициализация деков.
  D1.PFirst := nil;
  D1.PLast := nil;
  D2 := D1;
  D3 := D1;
 
  //Записываем в первые 2 дека элементы по возрастанию значений в направлении
  //начало - конец.
  Randomize;
  //В первый дек записываем чётные значения.
  j := 0;
  for i := 1 to 5 + Random(M) do begin
    New(PElem);
    PElem^.Data := j;
    PushL(D1, PElem);
    Inc(j, 2);
  end;
  //Во второй дек записываем нечётные значения.
  j := 1;
  for i := 1 to 5 + Random(M) do begin
    New(PElem);
    PElem^.Data := j;
    PushL(D2, PElem);
    Inc(j, 2);
  end;
  //Распечатка первых двух деков.
  Memo1.Lines.Add('Первый дек:');
  Memo1.Lines.Add(DeckPrint(D1));
  Memo1.Lines.Add('Второй дек:');
  Memo1.Lines.Add(DeckPrint(D2));
 
  //Решение задачи.
  F1 := PopL(D1, PElem1);
  F2 := PopL(D2, PElem2);
  //Выполняем работу пока в деке D1 и (или) D2 есть элементы.
  while F1 or F2 do begin
    //Если из конца дека D1 взят элемент и в этот момент оказалось:
    //- Что в деке D2 нет элементов.
    //- Или значение элемента, взятого из конца дека D2 оказалось меньше значения
    //элемента, взятого из конца дека D1.
    //- Тогда записываем элемент, взятый из конца дека D1 в конец дека D3.
    //А затем изымаем следующий элемент из конца дека D1.
    while F1 and ( not F2 or (PElem2^.Data < PElem1^.Data) ) do begin
      PushL(D3, PElem1);
      F1 := PopL(D1, PElem1);
    end;
    //Аналогично в отношении второго дека.
    while F2 and ( not F1 or (PElem1^.Data < PElem2^.Data) ) do begin
      PushL(D3, PElem2);
      F2 := PopL(D2, PElem2);
    end;
  end;
 
  //Ответ.
  Memo1.Lines.Add('Третий дек:');
  Memo1.Lines.Add(DeckPrint(D3));
 
  //Удаление деков из памяти.
  DeckFree(D1);
  DeckFree(D2);
  DeckFree(D3);
  Memo1.Lines.Add('Деки удалены из памяти.');
end;
Миниатюры
деки в делфи  
Вложения
Тип файла: rar WorkWithDecks.rar (166.3 Кб, 50 просмотров)
2
16 / 16 / 9
Регистрация: 03.06.2011
Сообщений: 59
12.03.2012, 18:45  [ТС]
Mawrat, а можно както переделать программу чтобы ввод осуществлялся пользователем а не рандомно?? буду очень благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2012, 18:45
Помогаю со студенческими работами здесь

У меня стоит Делфи 5, возможно еще поставить и Делфи 7, или будут проблемы?!
Где можно скачать Делфи 7, дайте ссылку! У меня стоит Делфи 5, возможно еще поставить и Делфи 7, или будут проблемы?!

Как открыть doc в делфи? Или как можно написать огромный текст в делфи?
Думаю поймете. Я решил сделать сборник книг. И в Delphi добавил список книг (в виде кнопок) и при выборе я бы хотел открыть форму где был...

То что работает в Делфи 7 - не работает в Делфи 2010
Здравствуйте есть прога создана в Delphi 7. Хочу теперь ее скомпилировать в Делфи 2010. Но выходят ошибки уже при открытии файла...

стеки, деки, очереди
Всем привет! Mне нужно найти много примеры для стека, дека и очереди чтобы хорошо изучать их в паскале. Заранее всем спасибо :)

Задача про деки
Попалась такая вот задача на e-olimp: Мой код: #include &lt;iostream&gt; #include &lt;deque&gt; #include &lt;string&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru