Массив с сортировкой - Pascal ABC
Формулировка задачи:
Вывести число в массиве a[1..n], повторяющееся мак-
симальное число раз. Если таких чисел несколько, то
вывести их все. После этого вывести отсортированный
массив. (При реализации алгоритма новый массив не
заводить).
Решение задачи: «Массив с сортировкой»
textual
Листинг программы
const n=15; type mas=array[1..n] of integer; var a:mas; i,j,k,kmax:integer; procedure vv_mas(var x:mas;st:string;f:boolean); var i:integer; begin writeln(st); if f then for i:=1 to n do a[i]:=random(11); for i:=1 to n do write(a[i],' '); writeln end; begin vv_mas(a,'A:',true); for i:=1 to n-1 do for j:=i to n do if a[i]>a[j] then begin a[i]:=a[i]+a[j]; a[j]:=a[i]-a[j]; a[i]:=a[i]-a[j] end; i:=1;k:=1;kmax:=k; while i<n do begin if a[i]=a[i+1] then inc(k) else if k>kmax then begin kmax:=k; k:=1 end else k:=1; inc(i); end; if k>kmax then kmax:=k; write('повторяется максимальное число раз: '); i:=1;k:=1; while i<n do begin if a[i]=a[i+1] then inc(k) else begin if k=kmax then write(a[i],' ');k:=1 end; inc(i) end; if k=kmax then write(a[i]); writeln; vv_mas(a,'A'':',false); end.
Объяснение кода листинга программы
- В первой строке кода определяется переменная
n
со значением 15. - Затем определяется тип данных
mas
, который представляет собой массив целых чисел размером от 1 доn
. - Создается переменная
a
типаmas
. - Определяются три переменные
i
,j
иk
типаinteger
. - Создается процедура
vv_mas
, которая принимает в качестве параметров переменнуюx
типаmas
, строкуst
и булево значениеf
. - Внутри процедуры выводится строка
st
с помощью функцииwriteln
. - Если значение переменной
f
равноtrue
, то для каждого элемента массиваa
со значениями от 1 доn
генерируется случайное число от 11 до 100 с помощью функцииrandom(11)
. - Затем для каждого элемента массива
a
выводится его значение с помощью функцииwrite(a[i])
. - После вывода всех элементов массива выводится строка
writeln
. - Вторая часть кода начинается с вызова процедуры
vv_mas
для переменнойa
со строкой'A'
и значениемtrue
. - Затем выполняется цикл
while
, который проверяет, что текущий элемент массиваa
не повторяется в следующем элементе. - Если текущий элемент массива
a
повторяется, то обновляется значение переменнойkmax
и сбрасывается значение переменнойk
до 1. - Если текущий элемент массива
a
не повторяется, то обновляется значение переменнойk
до следующего максимального значения. - После завершения цикла
while
выводится сообщение о том, сколько раз повторяется максимальное число. - Затем начинается еще один цикл
while
, который проверяет, что текущий элемент массиваa
не повторяется в следующем элементе. - Если текущий элемент массива
a
повторяется, то выводится его значение и сбрасывается значение переменнойk
до 1. - Если текущий элемент массива
a
не повторяется, то выводится его значение. - После завершения цикла
while
выводится сообщение о том, сколько раз повторяется максимальное число. - Конец процедуры
vv_mas
. - Конец программы.