Включить после каждого элемента списка с максимальным значением его копию - Pascal

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

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

Дан список из n целых чисел а1,а2,....,аn. Включить после каждого элемента с максимальным значением его копию(продублировать элемент).

Решение задачи: «Включить после каждого элемента списка с максимальным значением его копию»

textual
Листинг программы
const
  maxRandomValue = 10;
  
type
  tList = ^rList;
  rList = record
    a : Integer;
    n : tList;
  end;
 
function CreateRandomList(n : Integer) : tList;
var
  Cur : tList;
begin
  if n <= 0 then
    CreateRandomList := nil
  else
    begin
      New(Cur);
      Cur^.a := Random(maxRandomValue);
      CreateRandomList := Cur;
      while n > 1 do
        begin
          New(Cur^.n);
          Cur := Cur^.n;
          Cur^.a := Random(maxRandomValue);
          Dec(n);
        end;
      Cur^.n := nil;
    end;
end;
 
function MaxList(a : tList) : Integer;
var
  m : Integer;
begin
  MaxList := 0;
  if a = nil then Exit;
  
  m := a^.a;
  while a <> nil do
    begin
      if a^.a > m then m := a^.a;
      a := a^.n;
    end;
    
  MaxList := m;
end;
 
procedure ModificationList(m : Integer; var a : tList);
var
  Cur, Next : tList;
begin
  Cur := a;
  while Cur <> nil do
    if Cur^.a = m then
      begin
        Next := Cur^.n;
        New(Cur^.n);
        Cur := Cur^.n;
        Cur^.a := m;
        Cur^.n := Next;
        Cur := Next;
      end
    else
      Cur := Cur^.n;
end;
  
procedure OutList(a : tList);
var
  Cur : tList;
begin
  if a = nil then WriteLn('<список пуст>')
  else
    begin
      Cur := a;
      while Cur <> nil do
        begin
          Write(#32, Cur^.a);
          Cur := Cur^.n;
        end;
      WriteLn;
    end;
end;
 
var
  n, m : Integer;
  a : tList;
begin
  Randomize;
  Write('Число элементов списка: n = '); ReadLn(n);
  a := CreateRandomList(n);
  Write('Список a:'); OutList(a);
  m := MaxList(a); WriteLn('Максимальное значение = ', m);
  ModificationList(m, a);
  Write('Список a:'); OutList(a);
end.

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

  1. Объявляются константа maxRandomValue со значением 10 и тип tList с указателем на запись rList с полями a (целое число) и n (указатель на tList).
  2. Создается функция CreateRandomList с параметром n, которая возвращает tList. Если n меньше или равно 0, то функция возвращает nil, иначе инициализируется новая переменная Cur с указателем на tList, в которую записывается случайное число от 0 до maxRandomValue. Затем создается список случайных чисел длиной n.
  3. Создается функция MaxList с параметром a, которая возвращает максимальное значение из списка. Инициализируется переменная m и происходит поиск максимального значения в списке.
  4. Создается процедура ModificationList с параметрами m (максимальное значение) и a (список), которая добавляет после каждого элемента списка с максимальным значением его копию.
  5. Создается процедура OutList с параметром a, которая выводит список на экран.
  6. В основной части программы инициализируется переменная n (длина списка), m (максимальное значение) и a (список). Затем инициализируется генератор случайных чисел Randomize. Пользователю предлагается ввести количество элементов списка, затем создается список случайных чисел и выводится на экран. Вычисляется максимальное значение, после чего список модифицируется и выводится на экран снова.

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


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

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

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