Отсортировать элементы одномерного массива целых случайных чисел по возрастанию методом сортировки подсчётом - PascalABC.NET

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

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

Добрый день. Помогите, пожалуйста, с написанием программы на Pascal ABC.NET со следующим заданием: "Отсортировать элементы одномерного массива целых случайных чисел по возрастанию методом сортировки подсчётом". Помимо отсортированного массива нужно вывести массив, в котором производился подсчёт. Заранее спасибо.

Решение задачи: «Отсортировать элементы одномерного массива целых случайных чисел по возрастанию методом сортировки подсчётом»

textual
Листинг программы
const mi = 19;
var a: array [1..mi] of integer;
    c: array [-99..99] of integer;
    i, j, k: integer;
begin
  randomize; {инициализацию можно убрать, это для совместимости с другими диалектами паскаля}
  writeln('Исходный массив:');
  for i := 1 to mi do
    begin
      a[i] := random(199) - 99;
      write(a[i]:4)
    end;
  writeln;
  for i := -99 to 99 do c[i] := 0; {инициализацию можно убрать, это для совместимости с другими диалектами паскаля}
  for i := 1 to mi do inc(c[a[i]]);
  j := 0;
  for i := -99 to 99 do
    for k := 1 to c[i] do
      begin
        inc(j);
        a[j] := i
      end;
  writeln('Отсортированный массив:');
  for i := 1 to mi do write(a[i]:4);
  writeln;
  writeln('Массив, в котором производился подсчёт:');
  for i := -99 to 99 do write(c[i]:4);
  readln {можно убрать, это для совместимости с другими диалектами паскаля}
end.

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

В данном коде реализован метод сортировки подсчётом для одномерного массива целых случайных чисел.

  1. Синтаксис и объявление переменных:
    • Задано значение mi, которое определяет размер исходного массива a (var mi: integer).
    • Объявлен одномерный массив a (var a: array [1..mi] of integer).
    • Объявлен массив c, который будет использоваться для подсчёта количества каждого элемента в массиве a (var c: array [-99..99] of integer).
    • Объявлены три переменные i, j, k типа integer (var i, j, k: integer).
  2. Инициализация:
    • Выполнена инициализация генератора случайных чисел с помощью функции randomize (randomize).
    • Массив c инициализирован нулями (for i := -99 to 99 do c[i] := 0).
  3. Заполнение исходного массива a:
    • В цикле от 1 до mi заполняются элементы массива a случайными целыми числами в диапазоне от 0 до 199 (for i := 1 to mi do begin a[i] := random(199) - 99; write(a[i]:4)).
  4. Подсчёт количества каждого элемента в массиве a:
    • В цикле от -99 до 99 заполняются элементы массива c, увеличиваясь на 1 при каждой встрече элемента в массиве a (for i := -99 to 99 do for k := 1 to c[i] do begin inc(j); a[j] := i end).
  5. Вывод отсортированного массива a:
    • В цикле от 1 до mi выводятся элементы отсортированного массива a (for i := 1 to mi do write(a[i]:4)).
  6. Вывод массива c:
    • Выводится массив c (writeln('Массив, в котором производился подсчёт:'); for i := -99 to 99 do write(c[i]:4)).
  7. Ввод для завершения работы программы:
    • Добавлена возможность ввода для совместимости с другими диалектами паскаля (readln).

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

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