Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 186
от 29.06.2006, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 195, Экспертов: 50
В номере:Вопросов: 1, Ответов: 3


Вопрос № 47186: Здравствуйте, передо мной такая задача: Распечатать список студентов, упорядоченный а) по алфавиту б) по месяцу рождения в) по году рождения г) по дате рождения В приложении маленький исходник который только вводит ...

Вопрос № 47.186
Здравствуйте, передо мной такая задача:

Распечатать список студентов, упорядоченный
а) по алфавиту
б) по месяцу рождения
в) по году рождения
г) по дате рождения

В приложении маленький исходник который только вводит список студентов, т.е. получается, так, что на одного студента в файле уходит 4 строки.
Далее нужно отсартировать и вывести на печать ....
в этом и проблема у меня ...

Приложение:

Отправлен: 24.06.2006, 07:56
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное