Включить после каждого элемента списка с максимальным значением его копию - 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.
Объяснение кода листинга программы
- Объявляются константа
maxRandomValue
со значением 10 и типtList
с указателем на записьrList
с полямиa
(целое число) иn
(указатель на tList). - Создается функция
CreateRandomList
с параметромn
, которая возвращает tList. Еслиn
меньше или равно 0, то функция возвращает nil, иначе инициализируется новая переменнаяCur
с указателем на tList, в которую записывается случайное число от 0 доmaxRandomValue
. Затем создается список случайных чисел длинойn
. - Создается функция
MaxList
с параметромa
, которая возвращает максимальное значение из списка. Инициализируется переменнаяm
и происходит поиск максимального значения в списке. - Создается процедура
ModificationList
с параметрамиm
(максимальное значение) иa
(список), которая добавляет после каждого элемента списка с максимальным значением его копию. - Создается процедура
OutList
с параметромa
, которая выводит список на экран. - В основной части программы инициализируется переменная
n
(длина списка),m
(максимальное значение) иa
(список). Затем инициализируется генератор случайных чиселRandomize
. Пользователю предлагается ввести количество элементов списка, затем создается список случайных чисел и выводится на экран. Вычисляется максимальное значение, после чего список модифицируется и выводится на экран снова.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д