С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
1

Описать и проверить процедуру или функцию, которая вставляет в список L за первым вхождением элемента Е все элементы списка L1, если Е входит в L1.

06.11.2013, 13:09. Показов 5229. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
type TЭ=…; {тип элементов списка}
{выбирается по желанию}
список= ^звено;
звено: record элем: TЭ;
след: список
end;
Описать и проверить процедуру или функцию, которая вставляет в список L за первым вхождением элемента Е все элементы списка L1, если Е входит в L1.

Помогите пожалуйста с програмкой
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.11.2013, 13:09
Ответы с готовыми решениями:

Вставить в список L за первым вхождением элемента E все элементы списка L, если E входит в L
Составить программу, которая вставляет в список L за первым вхождением элемента E все элементы...

Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е
Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е.

Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е
Описать процедуру, которая вставляет в список L новый элемент E1 за каждым вхождением элемента Е

Описать Процедуру, которая вставляет в список L новый эле-мент Е1 за каждым вхождением элемента Е
Описать процедуру, которая вставляет в список L новый элемент Е1 за каждым вхождением элемента Е...

3
13107 / 5888 / 1707
Регистрация: 19.09.2009
Сообщений: 8,808
07.11.2013, 02:48 2
Типы данных:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  {Тип основных данных.}
  TData = Integer;
  {Тип указателя на элемент списка.}
  TPElem = ^TElem;
  {Тип элемента списка.}
  TElem = record
    Data : TData; {Основные данные.}
    PNext : TPElem; {Указатель на следующий элемент списка.}
  end;
  {Тип, описывающий однонаправленный список.}
  TDList = record
    PFirst, PLast : TPElem; {Указатели на первый и на последний элементы списка.}
  end;
Функция, решающая задачу:
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
{Решение задачи.
Вставить в список L1 за первым вхождением элемента Е все элементы списка L2,
если Е входит в L2.
Если список L2 вставлен в список L1, то функция возвращает порядковый
номер первого элемента E в первом списке.
В противном случае, функция возвращает значение = 0.}
function Proc(var aL1, aL2 : TDList; const aE : TData) : Integer;
var
  PElem, PE : TPElem;
  Res : Integer;
begin
  Result := 0;
  {Ищем в первом списке первый элемент со значением E.}
  Res := 0; {Порядковый номер найденного элемента.}
  PE := aL1.PFirst; {Указатель на текущий элемент списка.}
  while (PE <> nil) and (PE^.Data <> aE) do begin
    Inc(Res);
    PE := PE^.PNext; {Получаем указатель на следующий элемент списка.}
  end;
  {Если элемент E найден в первом списке.}
  if PE <> nil then begin
    {Проверяем, присутствует ли элемент E во втором списке.}
    PElem := aL2.PFirst;
    while (PElem <> nil) and (PElem^.Data <> aE) do
      PElem := PElem^.PNext;
    {Если элемент E найден во втором списке, то вставляем второй список
    после элемента E в первом списке.}
    if PElem <> nil then begin
      aL2.PLast^.PNext := PE^.PNext;
      PE^.PNext := aL2.PFirst;
      Init(aL2);
      Result := Res;
    end;
  end;
end;
Программа полностью:
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
type
  {Тип основных данных.}
  TData = Integer;
  {Тип указателя на элемент списка.}
  TPElem = ^TElem;
  {Тип элемента списка.}
  TElem = record
    Data : TData; {Основные данные.}
    PNext : TPElem; {Указатель на следующий элемент списка.}
  end;
  {Тип, описывающий однонаправленный список.}
  TDList = record
    PFirst, PLast : TPElem; {Указатели на первый и на последний элементы списка.}
  end;
 
{Начальная инициализация списка. Внимание! Эту процедуру можно выполнять
только в отношении пустого списка! Иначе - будут утечки памяти.}
procedure Init(var aList : TDList);
begin
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
{Добавление элемента в конец однонаправленного списка.}
procedure Add(var aList : TDList; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem); {Выделяем память для нового элемента.}
  PElem^.Data := aData; {Запись основных данных.}
  {Указатель на следующий элемент равен nil, т. к. это последний элемент в списке.}
  PElem^.PNext := nil;
  {Если список пуст, то новый элемент становится первым элементом списка.}
  if aList.PFirst = nil then
    aList.PFirst := PElem
  {Если список непустой, то новый элемент прикрепляется к последнему элементу списка.}
  else
    aList.PLast^.PNext := PElem;
  aList.PLast := PElem; {Новый элемент становится последним элементом списка.}
end;
 
{Особождение памяти, занятой под список.}
procedure LFree(var aList : TDList);
var
  PNext, PDel : TPElem;
begin
  PNext := aList.PFirst;
  while PNext <> nil do begin
    PDel := PNext;
    PNext := PNext^.PNext;
    Dispose(PDel);
  end;
  Init(aList);
end;
 
{Распечатка однонаправленного списка.}
procedure LWriteln(const aList : TDList);
var
  PElem : TPElem;
begin
  if aList.PFirst = nil then
    Write('Список пуст.')
  else begin
    PElem := aList.PFirst;
    while PElem <> nil do begin
      if PElem <> aList.PFirst then Write(', ');
      Write(PElem^.Data);
      PElem := PElem^.PNext;
    end;
  end;
  Writeln;
end;
 
{Диалог добавления элементов в список.}
procedure WorkAdd(var aL : TDList);
var
  S : String;
  i : Integer;
  Data : TData;
begin
  Writeln('Прекратить ввод - пустая строка + Enter.');
  i := 0;
  repeat
    Write('Новый элемент ', i + 1, ': ');
    Readln(S);
    if S <> '' then begin
      if TryStrToInt(S, Data) then begin
        Inc(i);
        Add(aL, Data);
      end else
        Writeln('Неверный ввод! Повторите.');
    end;
  until S = '';
end;
 
{Решение задачи.
Вставить в список L1 за первым вхождением элемента Е все элементы списка L2,
если Е входит в L2.
Если список L2 вставлен в список L1, то функция возвращает порядковый
номер первого элемента E в первом списке.
В противном случае, функция возвращает значение = 0.}
function Proc(var aL1, aL2 : TDList; const aE : TData) : Integer;
var
  PElem, PE : TPElem;
  Res : Integer;
begin
  Result := 0;
  {Ищем в первом списке первый элемент со значением E.}
  Res := 0; {Порядковый номер найденного элемента.}
  PE := aL1.PFirst; {Указатель на текущий элемент списка.}
  while (PE <> nil) and (PE^.Data <> aE) do begin
    Inc(Res);
    PE := PE^.PNext; {Получаем указатель на следующий элемент списка.}
  end;
  {Если элемент E найден в первом списке.}
  if PE <> nil then begin
    {Проверяем, присутствует ли элемент E во втором списке.}
    PElem := aL2.PFirst;
    while (PElem <> nil) and (PElem^.Data <> aE) do
      PElem := PElem^.PNext;
    {Если элемент E найден во втором списке, то вставляем второй список
    после элемента E в первом списке.}
    if PElem <> nil then begin
      aL2.PLast^.PNext := PE^.PNext;
      PE^.PNext := aL2.PFirst;
      Init(aL2);
      Result := Res;
    end;
  end;
end;
 
var
  L1, L2 : TDList;
  E : TData;
  Res : Integer;
  F : Boolean;
  S : String;
begin
  {Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  Если после переключения русские буквы показываются неверно,
  следует открыть системное меню консольного окна - щелчком мыши в левом
  верхнем углу окна консоли и выбрать:
  Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".}
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  {Начальная инициализация списков.}
  Init(L1);
  Init(L2);
 
  repeat
    Writeln('Добавление элементов в первый список.');
    WorkAdd(L1);
    Writeln('Составлен список:');
    LWriteln(L1);
    Write('Для продолжения нажмите Enter. ');
    Readln;
 
    Writeln('Добавление элементов во второй список.');
    WorkAdd(L2);
    Writeln('Составлен список:');
    LWriteln(L2);
    Write('Для продолжения нажмите Enter. ');
    Readln;
 
    repeat
      Write('Задайте значение искомого элемента (E): ');
      Readln(S);
      F := TryStrToInt(S, E);
      if not F then
        Writeln('Неверный ввод! Повторите.');
    until F;
 
    {Решение задачи.}
    Res := Proc(L1, L2, E);
 
    if Res > 0 then begin
      Writeln('Элемент найден в первом списке. Его порядковый номер: ', Res);
      Writeln('После найденного элемента вставлен второй список.');
    end
    else begin
      Writeln('Искомый элемент в первом списке не обнаружен.');
      Writeln('Первый список остался без изменений.');
    end;
    Writeln('Первый список:');
    LWriteln(L1);
 
    {Освобождение памяти, занятой под списки.}
    LFree(L1);
    LFree(L2);
    Writeln('Память, занятая под списки, освобождена.');
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
2
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
10.11.2013, 13:19  [ТС] 3
Mawrat, а можно все это с формой как-нибудь сделать?
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
22.11.2013, 07:50 4
Примерно так:
Спасибо Mawrat за весь функционал.
Вложения
Тип файла: rar Объединение списков по условию_.rar (4.5 Кб, 63 просмотров)
2
22.11.2013, 07:50
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2013, 07:50
Помогаю со студенческими работами здесь

Описать процедуру и функцию которая, удаляет из списка L за каждым вхождением элемента Е один элем если такой есть, и он отличен от Е
помогите пожалуйста очень нужно я в С++ очень плохо разбираюсь

Описать процедуру и функцию которая, удаляет из списка L за каждым вхождением элемента Е один элем если такой есть, и он отличен от Е
помогите пожалуйста очень нужно

Вставить в список L за первым вхождением элемента Е все элементы списка L1
Помогите пожалуйста с заданием &quot;Вставить в список L за первым вхождением элемента Е все элементы...

Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента Е
на с++. Составить программу, которая вставляет в список L но¬вый элемент F перед первым вхождением...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru