Из вещественных элементов списка L строит два новых - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Используя описание: список=^звено звено=record элемент:тип элемента; следующий:список; end Написать программу, которая из вещественных элементов списка L строит два новых списка L1 - из положительных элементов и L2 - из отрицательных.

Решение задачи: «Из вещественных элементов списка L строит два новых»

textual
Листинг программы
  1. type
  2.   tList = ^tLink;
  3.   tLink = record
  4.     N : Real;
  5.     X : tList;
  6.   end;
  7.  
  8. var
  9.   L, L1, L2, Cur, La1, La2, T : tList;
  10.   i : Integer;
  11. begin
  12.   Randomize;
  13.   L := nil;
  14.   for i := 1 to 20 do
  15.     begin
  16.       New(Cur); Cur^.N := Random(19) - 9; Cur^.X := L; L := Cur;
  17.     end;
  18.    
  19.   Write(' L = '); Cur := L; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn;
  20.  
  21.   L1 := nil; La1 := nil;
  22.   L2 := nil; La2 := nil;
  23.   Cur := L;
  24.   while Cur <> nil do
  25.     begin
  26.       T := Cur; Cur := Cur^.X; T^.X := nil;
  27.       if T^.N < 0 then
  28.         begin
  29.           if L1 = nil then L1 := T else La1^.X := T;
  30.           La1 := T;
  31.         end
  32.       else if T^.N > 0 then
  33.         begin
  34.           if L2 = nil then L2 := T else La2^.X := T;
  35.           La2 := T;
  36.         end
  37.       else { T.N = 0 }
  38.         Dispose(T);
  39.     end;
  40.      
  41.   Write('L1 = '); Cur := L1; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn;
  42.   Write('L2 = '); Cur := L2; while Cur <> nil do begin Write(Cur^.N:3); Cur := Cur^.X; end; WriteLn;
  43. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы