Массив с сортировкой - 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.

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

  1. В первой строке кода определяется переменная n со значением 15.
  2. Затем определяется тип данных mas, который представляет собой массив целых чисел размером от 1 до n.
  3. Создается переменная a типа mas.
  4. Определяются три переменные i, j и k типа integer.
  5. Создается процедура vv_mas, которая принимает в качестве параметров переменную x типа mas, строку st и булево значение f.
  6. Внутри процедуры выводится строка st с помощью функции writeln.
  7. Если значение переменной f равно true, то для каждого элемента массива a со значениями от 1 до n генерируется случайное число от 11 до 100 с помощью функции random(11).
  8. Затем для каждого элемента массива a выводится его значение с помощью функции write(a[i]).
  9. После вывода всех элементов массива выводится строка writeln.
  10. Вторая часть кода начинается с вызова процедуры vv_mas для переменной a со строкой 'A' и значением true.
  11. Затем выполняется цикл while, который проверяет, что текущий элемент массива a не повторяется в следующем элементе.
  12. Если текущий элемент массива a повторяется, то обновляется значение переменной kmax и сбрасывается значение переменной k до 1.
  13. Если текущий элемент массива a не повторяется, то обновляется значение переменной k до следующего максимального значения.
  14. После завершения цикла while выводится сообщение о том, сколько раз повторяется максимальное число.
  15. Затем начинается еще один цикл while, который проверяет, что текущий элемент массива a не повторяется в следующем элементе.
  16. Если текущий элемент массива a повторяется, то выводится его значение и сбрасывается значение переменной k до 1.
  17. Если текущий элемент массива a не повторяется, то выводится его значение.
  18. После завершения цикла while выводится сообщение о том, сколько раз повторяется максимальное число.
  19. Конец процедуры vv_mas.
  20. Конец программы.

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

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