Массив: Выведите на экран таблицу, в которой перечислены элементы массива (без повторений, в порядке убывания) - Free Pascal
Формулировка задачи:
Дан одномерный массив натуральных чисел. Выведите на экран таблицу, в которой перечислены элементы массива (без повторений, в порядке убывания) и сколько раз они повторяются в массиве.
Здесь нужно исправить повторение и сделать по убыванию
var
buf, k, i, j: integer;
a: array[1..100] of integer;
begin
writeln('Введите количество элементов в массиве');
readln(k);
for i := k to 1 do
begin
writeln('Введите ', i, '-ый элемент массива:');
readln(a[i]);
end;
for i := k to 1 do
for j := k to 1 do
if a[i] < a[j] then
begin
buf := a[i];
a[i] := a[j];
a[j] := buf;
end;
writeln('Полученный массив');
for i := k to 1 do
writeln(a[i], ' ');
readln;
end.
Желательно с комментариями, что делает строка та или иная
Решение задачи: «Массив: Выведите на экран таблицу, в которой перечислены элементы массива (без повторений, в порядке убывания)»
textual
Листинг программы
const mn=100;
var
a: array [1..mn+1] of Integer;
i, j, n, t: Integer;
begin
repeat
Write('Количество элементов [1..',mn,']: '); ReadLn(n);
until (n>=1) and (n<=mn);
Write('Элементы: ');
for i:=1 to n do Read(a[i]); ReadLn;
for i:=n downto 2 do
for j:=2 to i do
if a[j-1]<a[j] then begin
t:=a[j-1]; a[j-1]:=a[j]; a[j]:=t;
end;
a[n+1]:=a[n]+1; j:=1;
for i:=1 to n do
if a[i]=a[i+1] then Inc(j)
else begin
WriteLn(a[i]:8,': ',j); j:=1;
end;
end.
Объяснение кода листинга программы
- В начале программы объявляются следующие переменные: — mn — количество элементов в массиве (100 по умолчанию); — a — массив, содержащий элементы типа Integer; — i, j, n, t — вспомогательные переменные типа Integer.
- В цикле repeat запрашивается количество элементов массива от 1 до mn.
- После выхода из цикла repeat, выводится сообщение
Элементы:и запрашивается ввод элементов массива. - В цикле for i:=n downto 2 выполняется сортировка массива по убыванию.
- После сортировки, к последнему элементу массива добавляется 1, инициализируется переменная j=1.
- В цикле for i:=1 to n выполняется проверка на повторяющиеся элементы.
- Если элементы повторяются, то выводится сообщение вида
a[i]:8,: j, где a[i] — элемент массива, j — номер первого вхождения элемента в массиве. - После вывода всех повторяющихся элементов, переменная j сбрасывается в 1.