Из вещественных элементов списка L строит два новых - Turbo Pascal
Формулировка задачи:
Используя описание:
список=^звено
звено=record
элемент:тип элемента;
следующий:список;
end
Написать программу, которая из вещественных элементов списка L строит два новых списка L1 - из положительных элементов и L2 - из отрицательных.
Решение задачи: «Из вещественных элементов списка L строит два новых»
textual
Листинг программы
type tList = ^tLink; tLink = record N : Real; X : tList; end; var L, L1, L2, Cur, La1, La2, T : tList; i : Integer; begin Randomize; L := nil; for i := 1 to 20 do begin New(Cur); Cur^.N := Random(19) - 9; Cur^.X := L; L := Cur; end; Write(' L = '); Cur := L; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn; L1 := nil; La1 := nil; L2 := nil; La2 := nil; Cur := L; while Cur <> nil do begin T := Cur; Cur := Cur^.X; T^.X := nil; if T^.N < 0 then begin if L1 = nil then L1 := T else La1^.X := T; La1 := T; end else if T^.N > 0 then begin if L2 = nil then L2 := T else La2^.X := T; La2 := T; end else { T.N = 0 } Dispose(T); end; Write('L1 = '); Cur := L1; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn; Write('L2 = '); Cur := L2; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn; end.
Объяснение кода листинга программы
- Создается тип данных
tList
, который представляет собой указатель на структуруtLink
. В структуреtLink
есть два поля:N
- вещественное число иX
- ссылка на списокtList
. - Создаются три переменные типа
tList
:L
,L1
иL2
. ПеременнаяL
инициализируется какnil
. - С помощью цикла
for
создается 20 новых объектовtLink
. В каждом объекте генерируется случайное вещественное число в диапазоне от 1 до 19, и устанавливается ссылка на предыдущий объектtLink
в полеX
. Предыдущий объектtLink
обновляется, чтобы указывать на новый объект. - Выводится содержимое списка
L
. - Инициализируются три новые переменные
L1
,La1
иL2
какnil
. - В цикле
while
происходит следующее:- Если текущий объект
tLink
имеет ссылкуL1
, то обновляется ссылка на предыдущий объектtLink
вL1
и обновляется сам объектtLink
. - Если текущий объект
tLink
имеет ссылкуLa1
, то обновляется ссылка на предыдущий объектtLink
вLa1
и обновляется сам объектtLink
. - Если текущий объект
tLink
имеет ссылкуL2
, то обновляется ссылка на предыдущий объектtLink
вL2
и обновляется сам объектtLink
. - Если текущий объект
tLink
не имеет ссылок, то его поляN
иX
устанавливаются вnil
и объектtLink
удаляется с помощью функцииDispose()
.
- Если текущий объект
- Выводится содержимое списков
L1
,La1
иL2
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д