Лабораторная работа № 5.
Записи

1. Постановка задачи

Разработать программу для поиска необходимой информации в массиве, элементы которого являются записями. Каждая запись содержит информацию о студентах и состоит из следующих полей:

Для хранения данных в программе использовать динамические массивы. Для ввода данных использовать типизированный файл (типизированный файл должен создаваться из текстового в отдельной программе). Для вывода данных использовать текстовый файл. Имена файлов передаются через параметры программы.

После ввода исходных данных отсортировать их по указанному ключу. Отобрать данные по указанному условию. Отсортировать результаты по двум указанным ключам – сначала по первому, при равенстве первого ключа в записях – по второму.

Для сортировки разработать одну подпрограмму. Для задания ключа сортировки использовать параметр функционального типа. Реализовать метод быстрой сортировки.

Отсортировать исходные данные по группе. Найти студентов мужского пола, старших 18 лет. Определить их суммарную стипендию. Отсортировать выходные данные по фамилии и по группе.

2. Таблица данных

Класс Имя Смысл Тип Структура
Входные данные students Исходный массив запись одномерный массив
n Количество элементов массива цел. простая переменная
Выходные данные oldStudents Массив студентов мужского пола, старших 18 лет запись одномерный массив
k Количество элементов массива цел. простая переменная
sum Суммарная стипендия вещ. простая переменная

3. Аномалии

  1. Недостаточно параметров.
  2. Невозможно открыть файл для чтения.
  3. Некорректные данные в файле.
  4. Невозможно открыть файл для записи.

4. Тестовые примеры

№ теста Входные данные Ожидаемые результаты Смысл теста
1 students =
{{А-13-09, Иванов И.И.,   2001, м, 5, 5, 5, 1000},
 {А-13-09, Сидоров С.С.,  1996, м, 5, 4, 5, 1500},
 {А-13-09, Петрова П.П.,  2001, ж, 5, 5, 5, 1500},
 {А-13-09, Николаев Н.Н., 2002, м, 4, 4, 4, 1200},
 {А-14-09, Сидоров С.С.,  1995, м, 4, 4, 4, 1200},
 {А-14-09, Кузнецов К.К., 1996, м, 3, 4, 5, 1300},
 {А-14-09, Андреева А.И., 2002, ж, 5, 5, 5, 1500}}
oldStudents =
{{А-14-09, Кузнецов К.К., 1996, м, 3, 4, 5, 1300},
 {А-13-09, Сидоров С.С.,  1996, м, 5, 4, 5, 1500},
 {А-14-09, Сидоров С.С.,  1995, м, 4, 4, 4, 1200}}
k = 3
sum = 4000
Есть записи, удовлетворяющие условию.
2 students =
{{А-13-09, Иванов И.И.,   2001, м, 5, 5, 5, 1000},
 {А-13-09, Петрова П.П.,  2002, ж, 5, 5, 5, 1500},
 {А-14-09, Сидоров С.С.,  2003, м, 4, 4, 4, 1200},
 {А-14-09, Кузнецов К.К., 2002, м, 3, 4, 5, 1300}}
oldStudents = {}
k = 0
sum = 0
Нет записей, удовлетворяющих условию.

5. Метод

В цикле перебираем все элементы массива и отбираем записи, удовлетворяющие условию. Разрабатываем подпрограмму сортировки. Чтобы можно было разные массивы сортировать по разным ключам, необходимо передать в подпрограмму параметр функционального типа, который будет задавать функцию для сравнения полей записей.