Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Turbo Pascal Вычислить площадь прямоугольника по диагонали и углу между диагональю и большей стороной https://www.cyberforum.ru/ turbo-pascal/ thread760629.html
вот условие решается через условный оператор, формул к ней нет в условии не даны."Известна диагональ прямоугольника d и угол между диагональю и большей стороной. Вычислить площадь прямоугольника."
Найти первый член y Turbo Pascal
Turbo Pascal Описать, используя структуру записи, информацию в больничной базе данных о стационарных больных Добрый вечер! помогите пожалуйста с задачей в Паскале. у самой не получается. Буду вам очень благодарна! Описать, используя структуру записи, информацию в больничной базе данных о стационарных больных: ФИО, возраст, дата поступления, диагноз. Составить программу, осуществляющую ввод данных о каждом больном, определяющего старшего больного и больных лежащих в больнице более 15 дней. https://www.cyberforum.ru/ turbo-pascal/ thread760622.html Turbo Pascal Второй отрицательный элемент заменить минимальным https://www.cyberforum.ru/ turbo-pascal/ thread760619.html
Создать и вывести массив -у- с элементами где yk=fi+10(r) где i=3, k=1..12 . Второй отрицательный элемент заменить минимальным
Turbo Pascal Ввести в массив седловую точку и получить результат
Ввести в массив седловую точку и получить результат.. Var R: Array Of Integer; I, J, C, MaxS, IMin, Ex: Integer; Begin WriteLn('Матрица:'); For J:= 1 To 9 Do Begin For I:= 1 To 9 Do Begin R:= Integer(Random(10)); Write(R, ' ');
Turbo Pascal Составить процедуру преобразующую последовательность Пусть даны вещественные числа a1..a20. Составьте процедуру, преобразующую эту последовательность по правилу: большее из ai и ai+10 (i=1..10) принять в качестве нового значения ai, меньшее – в качестве нового значения ai+10. https://www.cyberforum.ru/ turbo-pascal/ thread760536.html
Turbo Pascal Программа подсчета букв L https://www.cyberforum.ru/ turbo-pascal/ thread760483.html
Написать программу подсчета букв "L" в первом рядке и знаков "+" во втором. Помогите пожалуйста, срочно нужно!
Turbo Pascal Напечатать квадрат той из матриц, в которой меньший след
Дано две квадрадические матрицы 3*3. Напечатать квадрат той из них, в которой меньший след(сума диагональных элементов) Написал, но она не работает... Исправьте пожалуйста program 1111; type arr=array of integer; var i,j,Sa,Sb:integer; a,b:arr; function sled(a:array of integer): integer; begin sled:=a+a+1+a+a; end; begin
Turbo Pascal Модуль GRAPH: Составьте программу вывода на экран стилизованного изображения велосипедиста https://www.cyberforum.ru/ turbo-pascal/ thread760417.html
Составьте программу вывода на экран стилизованного изображения велосипедиста. При нажатии клавиши Enter он начинает движение, вращая ногами педали
Turbo Pascal Модуль: Разработать подпрограмму определения количества нулевых элементов матрицы Добрый день! Помогите пожалуйста написать программу с помощью модуля,процедуры и функции соответственно.Текст задачи: Разработать подпрограмму определения количества нулевых элементов матрицы А(KxM). K=5; M=3. Вот данная программа без модуля каким образом ее изменить? program LR8; const k=5; m=3; https://www.cyberforum.ru/ turbo-pascal/ thread760380.html
Получить Все натуральные числа меньше n, квадрат суммы цифр которых равен m Turbo Pascal
Даны натуральные числа n,m. Получить Все натуральные числа меньше n, квадрат суммы цифр которых равен m.
Turbo Pascal Получить наименьшее N, при котором неравенство 3n^3-730>0 истинно https://www.cyberforum.ru/ turbo-pascal/ thread760325.html
Получить наименьшее натуральное число N, при котором неравенство 3n^3-730>0 истинно.
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
14.01.2013, 11:26 0

Основные операции с односвязным списком - Turbo Pascal - Ответ 3998549

14.01.2013, 11:26. Показов 3134. Ответов 1
Метки (Все метки)

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
program Project1;
 
type
  //Тип основных данных.
  TData = Integer;
  //Указатель на элемент списка.
  TPElem = ^TElem;
  //Элемент списка.
  TElem = record
    Data : TData; //Основные данные.
    PNext : TPElem; //Указатель на следующий элемент.
  end;
  //Список.
  TDList = record
    Cnt : Integer; //Количество элементов в списке.
    PFirst, PLast : TPElem; //Указатели на первый и на последний элементы списка.
  end;
 
//Процедура инициализации списка. Внимание! Эту процедуру можно выполнять
//только в отношении пустого списка. Иначе, произойдёт утечка памяти.
procedure Init(var aList : TDList);
begin
  aList.Cnt := 0;
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
//Добавление элемента в конец списка.
procedure Add(var aList : TDList; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := nil;
  if aList.PFirst = nil then
    aList.PFirst := PElem
  else
    aList.PLast^.PNext := PElem;
  aList.PLast := PElem;
  Inc(aList.Cnt);
end;
 
//Освобождение памяти, занятой под список.
procedure Free(var aList : TDList);
var
  PElem, PDel : TPElem;
begin
  PElem := aList.PFirst;
  while PElem <> nil do begin
    PDel := PElem;
    PElem := PElem^.PNext;
    Dispose(PDel);
  end;
  Init(aList);
end;
 
//Распечатка всего списка.
procedure Print(var aList : TDList);
var
  PElem : TPElem;
  i : Integer;
begin
  PElem := aList.PFirst;
  i := 0;
  while PElem <> nil do begin
    Inc(i);
    if i > 1 then Write(', ');
    Write(PElem^.Data);
    PElem := PElem^.PNext;
  end;
  Writeln;
end;
 
//Перестройка списка в обратном порядке.
procedure Reverse(var aList : TDList);
var
  PElem, PNext : TPElem;
begin
  aList.PLast := aList.PFirst;
  PNext := aList.PFirst;
  aList.PFirst := nil;
  while PNext <> nil do begin
    PElem := PNext;
    PNext := PNext^.PNext;
    PElem^.PNext := aList.PFirst;
    aList.PFirst := PElem;
  end;
end;
 
//Удаление элемента из однонаправленного списка по указателю на предыдущий элемент.
//Если указатель на предыдущий элемент равен NIL, то удаляется первый элемент списка.
procedure Del(var aList : TDList; var aPPrev : TPElem);
var
  PDel : TPElem;
begin
  if aList.PFirst = nil then Exit;
 
  if aPPrev = nil then begin
    PDel := aList.PFirst;
    aList.PFirst := PDel^.PNext;
  end else begin
    PDel := aPPrev^.PNext;
    if PDel <> nil then aPPrev^.PNext := PDel^.PNext;
  end;
  if aList.PLast = PDel then aList.PLast := aPPrev;
  if PDel <> nil then begin
    Dispose(PDel);
    Dec(aList.Cnt);
  end;
end;
 
//Удаление из списка элементов с заданным значением.
function DelByVal(var aList : TDList; const aData : TData) : Integer;
var
  PElem, PPrev : TPElem;
  Cnt : Integer;
begin
  Cnt := 0;
  PPrev := nil; //Указатель на предыдущий элемент.
  PElem := aList.PFirst; //Указатель на текущий элемент.
  while PElem <> nil do begin
    if PElem^.Data = aData then begin
      //Переход к следующему элементу надо выполнить перед вызовом Del(), потому
      //что процедура Del() удалит текущий элемент.
      PElem := PElem^.PNext;
      Del(aList, PPrev);
      Inc(Cnt);
    end else begin
      PPrev := PElem;
      PElem := PElem^.PNext;
    end;
  end;
  DelByVal := Cnt; //Количество удалённых элементов.
end;
 
//Диалог добавления элементов в список.
procedure WorkAdd(var aList : TDList);
var
  S : String;
  Data : TData;
  Code : Integer;
begin
  Writeln('Добавление элементов в список.');
  Writeln('Ввод каждого значения завершайте нажатием Enter.');
  Writeln('Чтобы прекратить ввод оставьте пустую строку и нажмите Enter.');
  repeat
    Write('Элемент №', aList.Cnt + 1, ': ');
    Readln(S);
    if S = '' then begin
      Writeln('Отмена.');
      Code := 0;
    end else begin
      Val(S, Data, Code);
      if Code = 0 then begin
        Add(aList, Data);
        Writeln('Элемент добавлен.');
        Code := 1;
      end else
        Writeln('Неверный ввод. Повторите.');
    end;
  until Code = 0;
  Writeln('Ввод элементов списка завершён.');
end;
 
var
  L : TDList;
  Data : TData;
  Cmd, Code, Cnt : Integer;
  S : String;
begin
  //Начальная инициализация списка.
  Init(L);
 
  repeat
    //Меню
    Writeln('Выберите действие:');
    Writeln('1: Добавление элементов в список.');
    Writeln('2: Распечатка списка.');
    Writeln('3: Удаление элементов по условию.');
    Writeln('4: Перестройка списка в обратном порядке.');
    Writeln('5: Удаление списка.');
    Writeln('6: Выход.');
    Write('Введите команду: ');
    Readln(Cmd);
    case Cmd of
      1: WorkAdd(L);
      2:
        if L.PFirst = nil then
          Writeln('Спиосок пуст.')
        else begin
          Writeln('Содержимое списка:');
          Print(L);
        end;
      3:
      begin
        Writeln('Элементы с заданным значением будут удалены из списка.');
        Writeln('Чтобы отменить операцию оставьте пустую строку и нажмите Enter.');
        repeat
          Write('Значение: ');
          Readln(S);
          if S = '' then begin
            Writeln('Операция отменена.');
            Code := 0;
          end else begin
            Val(S, Data, Code);
            if Code = 0 then begin
              Cnt := DelByVal(L, Data);
              Writeln('Список обработан. Количество удалённых элементов: ', Cnt);
              Code := 1;
            end else
              Writeln('Неверный ввод. Повторите.');
          end;
        until Code = 0;
      end;
      4:
      begin
        Reverse(L);
        Writeln('Список перестроен в обратном порядке.');
      end;
      5, 6:
      begin
        Free(L);
        Writeln('Список удалён из памяти (очищен).');
      end;
      else
        Writeln('Незарегистрированная команда. Повторите ввод.');
    end;
  until Cmd = 6;
 
  Writeln('Работа программы завершена. Для выхода нажмите Enter.');
  Readln;
end.


Вернуться к обсуждению:
Основные операции с односвязным списком Turbo Pascal
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2013, 11:26
Готовые ответы и решения:

Список: Реализовать базовые операции для работы с односвязным списком
Реализовать базовые операции для работы с односвязным списком: добавить элемент в список, удалить,...

Основные операции работы со списком
реализуйте основные операции для список : добавление элемента в конец и в начало списка ,...

Работа с односвязным списком
Помогите, пожалуйста, не могу написать процедуру для находения количества всех вхождений заданного...

Работа с линейным односвязным списком
Необходимо перед указанным лекарством вставить информацию о таком же лекарстве, но с датой...

1
14.01.2013, 11:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2013, 11:26
Помогаю со студенческими работами здесь

Результат - файл с записанным односвязным списком
Добрые люди, помогите пожалуйста! Не могу понять, как связать в третьем файле запись с односвязным...

Основные операции со списком
Есть задание: 1) Добавление элемента в начало списка. 2) Добавление элемента в хвост списка....

В чём разница между односвязным списком и односвязным стэком?
*весь вопрос находится в названии*

Задача с односвязным списком
Ребята, нужна помощь, кто может составьте. Буду благодерен. У меня не получается, т.к руки кривые....

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru