Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
16 / 16 / 9
Регистрация: 03.06.2011
Сообщений: 59

деки в делфи

19.02.2012, 17:52. Показов 3389. Ответов 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
13114 / 5895 / 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru