Из вещественных элементов списка 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.

Объяснение кода листинга программы

  1. Создается тип данных tList, который представляет собой указатель на структуру tLink. В структуре tLink есть два поля: N - вещественное число и X - ссылка на список tList.
  2. Создаются три переменные типа tList: L, L1 и L2. Переменная L инициализируется как nil.
  3. С помощью цикла for создается 20 новых объектов tLink. В каждом объекте генерируется случайное вещественное число в диапазоне от 1 до 19, и устанавливается ссылка на предыдущий объект tLink в поле X. Предыдущий объект tLink обновляется, чтобы указывать на новый объект.
  4. Выводится содержимое списка L.
  5. Инициализируются три новые переменные L1, La1 и L2 как nil.
  6. В цикле while происходит следующее:
    • Если текущий объект tLink имеет ссылку L1, то обновляется ссылка на предыдущий объект tLink в L1 и обновляется сам объект tLink.
    • Если текущий объект tLink имеет ссылку La1, то обновляется ссылка на предыдущий объект tLink в La1 и обновляется сам объект tLink.
    • Если текущий объект tLink имеет ссылку L2, то обновляется ссылка на предыдущий объект tLink в L2 и обновляется сам объект tLink.
    • Если текущий объект tLink не имеет ссылок, то его поля N и X устанавливаются в nil и объект tLink удаляется с помощью функции Dispose().
  7. Выводится содержимое списков L1, La1 и L2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы