Информатика • 9 класс
875

Сортировка массива записей по нескольким критериям (Паскаль)

  • В задачах программирования часто требуется упорядочить не простые числа, а записи (record), содержащие несколько полей — например, фамилию, класс, баллы и т. д. В таком случае сортировка выполняется не по одному признаку, а по нескольким критериям (например, сначала по классу, затем по баллам и фамилии).
  • Сортировка по нескольким критериям выполняется с помощью функции сравнения (компаратора), которая определяет, какой из двух элементов должен идти раньше.
  • В Pascal можно реализовать такую сортировку, используя собственную функцию сравнения и простую сортировку (например, пузырьковую).

    Пример. Функция, сортирующая учеников по классу (возрастание), затем по баллам (убывание) и по ФИО (по алфавиту).

Структура для хранения данных об ученике

Функция сравнения (компаратор)

  type TPupil =
  record
  FIO: string; //
  Фамилия, имя,
  отчество
  ClassNum:
  integer;
  // Номер класса
  Ball: integer;
  // Баллы
end;
var Pupils:
array of TPupil;

function ComparePupils (const A, B: TPupil): integer;
begin
  //1. Сравниваем класс (по возрастанию)
  if A.ClassNum < B.ClassNum then begin

    ComparePupils := -1;Exit; end;
  if A.ClassNum > B.ClassNum then begin

    ComparePupils := 1; Exit; end;
  //2. Если класс одинаковый —
  сравниваем баллы (по убыванию)
  if A.Ball > B.Ball then begin

    ComparePupils := -1; Exit; end;
  if A.Ball < B.Ball then begin

    ComparePupils := -1; Exit; end;
  //3. Если баллы равны —
  сравниваем ФИО (по алфавиту)
  if A.FIO < B.FIO then begin

    ComparePupils := -1; Exit; end;
  if A.FIO > B.FIO then begin

    ComparePupils := -1; Exit; end; end;

Было полезно?

Рекомендуем

Вы учитель или ученик?
Познакомьтесь с нашим образовательным онлайн-сервисом с тысячами интерактивных работ
Учителю
Удобно проводить уроки в классе, назначать работы на дом и анализировать результаты всего класса или конкретных учеников
Ученику
Самостоятельно изучать новые и повторять пройденные темы, готовиться по индивидуальной траектории и оценивать результаты на наглядных графиках
Зарегистрироваться в «Облаке знаний»
Логотип облако знаний
+7 (499) 322-07-57
info@oblakoz.ru

Контактный центр

МО, г. Долгопрудный,
Лихачевский проезд, 4, стр. 1

Отдел заботы о пользователях

Политика конфиденциальности

© ООО «Физикон Лаб», 2025

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪