IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сортировка по алфавиту
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


здравствуйте.
задание:
"Стрyктyра записи исходного документа – типизированный файл: курс, группа, номер в списке, фамилия, оценки по 4 предметам. Напечатать в выходном докyменте:Упорядоченный по алфавиту список студентов указанной группы."
возникла проблема со второй половиной задания и сортировкой по алфавиту.
прошу помощи в написании программы или описание подробного алгоритма работы.
заранее благодарю.

const m=100;
type students = record
kurs : byte;
grup : byte;
numb : byte;
fam : string[15];
pr1, pr2, pr3, pr4 : string[15];
opr1, opr2, opr3, opr4 : byte;
end;

var a : students;
F : text;
F2 : file of students;
n, i, j, numgrup : integer;
stud : array [1..m] of students;

begin
write('Введите кол-во студентов: ');
readln(n);
assign(F,'G:\pract\zapisi\spisok.doc');
rewrite(F);
with a do
begin
for i:= 1 to n do
begin
write('Введите курс ',i,' студента: ');
readln(kurs);
write('Введите группу ',i,' студента: ');
readln(grup);
write('Введите номер в списке ',i,' студента: ');
readln(numb);
write('Введите фамилию ',i,' студента: ');
readln(fam);
write('Название первого предмета для ',i,' студента: ');
readln(pr1);
write('Оценка по первому предмету для ',i,' студента: ');
readln(opr1);
write('Название второго предмета для ',i,' студента: ');
readln(pr2);
write('Оценка по второму предмету для ',i,' студента: ');
readln(opr2);
write('Название третьего предмета для ',i,' студента: ');
readln(pr3);
write('Оценка по третьему предмету для ',i,' студента: ');
readln(opr3);
write('Название четвертого предмета для ',i,' студента: ');
readln(pr4);
write('Оценка по четвертому предмету для ',i,' студента: ');
readln(opr4);
write(F, a);
end;
end;
close(F);


assign(F2,'G:\ptact\zapisi\alfav.doc');
reset(F);
rewrite(F2);
while not eof(F) do
begin
writeln('введите номер группы');
readln (numgrup);

end;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Думаю, что тут тебе будут нужна динамическая структура типа "список".

А структура программы, видимо, потребует изменения:
1. Меню с выбором (ввод в файл, вывод списка, выход)
2. Если ввод, то вызов подпрограммы ввода (у тебя уже готовый кусок кода, нужно только в виде поппрограммы оформить).
3. Если вывод, то
1) ввод номера группы
2) открытие файла
3) считываем данные на одного студента
4) если он не из нужной группы, то переход к п. 3)
5) если из нужной, то добавляем данные о нём в сортированный динамический список
6) переход к п.3)
7) когда чтение из файла завершено, то распечатываем по-порядку содержимое динамического списка
8) очищаем список

Можно просто считать в список, а потом отсортировать.

Здесь в FAQ есть пояснения о дин. структурах. Ссылка на FAQ выделена красным цветом вверху страницы.
Также есть примеры на форуме - это частые вопросы.

Сразу попробую предостеречь от частой ошибки, при создании типа для элемента списка все поля запихивают в один record, а лучше разделить эти вещи, например, так
type
PLink = ^TLink;
TLink = record
Info: students;
Next: PLink;
end;

Объём писанины велик. Потому - мне лень. Но твой код помогу подправить.

PS Ещё может быть у тебя тема "Внешняя сортировка", тогда нужно сортировать в файле. Это несколько сложнее, но алгоритмы существуют уже около 50 лет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 2:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name