Вопрос № 47186: Здравствуйте, передо мной такая задача:
Распечатать список студентов, упорядоченный
а) по алфавиту
б) по месяцу рождения
в) по году рождения
г) по дате рождения
В приложении маленький исходник который только вводит ...
Вопрос № 47.186
Здравствуйте, передо мной такая задача:
Распечатать список студентов, упорядоченный
а) по алфавиту
б) по месяцу рождения
в) по году рождения
г) по дате рождения
В приложении маленький исходник который только вводит список студентов, т.е. получается, так, что на одного студента в файле
уходит 4 строки.
Далее нужно отсартировать и вывести на печать ....
в этом и проблема у меня ...
Отвечает: METALLDOCTOR
Здравствуйте, Терсков Алексей Николаевич!
Чего уж проще-то? Создаёте для всех студентов с их параметрами массив(array of students) и упорядочиваете его методом пузырька.
Метод пузырька: делаете цикл(проще объяснить для ФОР'а), с количеством итераций равным количеству записей и в кадую итерацию
вставляете проход по массиву из (количество записей - 1) итераций и в каждой из них сравниваете текущее значение со следующим,
и, если следующее не больше, то меняете записи местами (см. прил.)
Приложение:
--------- Ни о чём не жалею!
Ответ отправил: METALLDOCTOR (статус:
4-ый класс)
Ответ отправлен: 24.06.2006, 11:18 Оценка за ответ: 5 Комментарий
оценки: Ну можно и с файлом погемороиться :) Я не прошу готового ответа ... Просто возился с ассемблером
и забыл про раскошь Паскаля(Record-ы например) Метод пузыря изучал когда-то давно .. Т.е. у меня получиться массив
переменных-записей количество которых равняется количеству студентов?
Отвечает: Gh0stik
Здравствуйте, Терсков Алексей Николаевич!
Я Вам предлагаю использовать не текстовый файл, а типизированный. В качестве структуры использовать такую конструкцию:
type students=RECORD
name : string;
year : integer;
month : byte;
day : byte;
END;
Тогда файл будет описан так:f:file of students;
В программе я Вам советую данные хранить в массиве, а потом сортировать массив по нужным вам записям.
В примере смотрите сортировки:
б) по месяцу рождения
в) по году рождения
Удачи!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии
с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус:
Студент)
Ответ отправлен: 24.06.2006, 11:28
Отвечает: Rok-set
Здравствуйте, Терсков Алексей Николаевич!
Хочу подчеркуть, что при вводе количества человек вручную их число заранее неизвестно, а в приведённых примерах оно является
константным. ДЛя выхода из ситуации советую использовать динамический массив.
Для сортировки же будет более рациональной процедура, которой в качестве параметров даются массив и флаг, по какому именно
полю записи этот массив необходимо отсортировать. отсортированный масиив выводится стандартным цыклом (таким образом получаем
только одну процедуру сортировки, в которой числовые данные будут сортироваться стандартно, а символьные - в зависимости
от их ASCII кодов (хочу напомнить, что коды прописных и заглавных букв отличаются :) ))
з.ы. АЛГОРИТМ ПРОСТ:
1. делаем выборку из массива - самый большой элемент ставим на первое место, первый элемент - на освободившееся;
2. сортируем массив таким же образом, но уже без первого элемента, и т.д.;
3. когда в массиве останется неотсортированным тольок один элемент - прекращаем сортировку :)
- сортируя записи по разным полям добиваемся сортировки по разным категориям.
Ответ отправил: Rok-set (статус:
2-ой класс)
Ответ отправлен: 25.06.2006, 06:50