PDA

Просмотр полной версии : сортировка по алфавиту



Masquerade of heroes
14.12.2014, 17:49
здравствуйте. возникли проблемы с сортировкой по алфавиту, прощу помощи.

задание: вводим курс, группу, номер в списке, фамилию, оценки по четырем предметам. записываем всё это в файл f. далее в файл f2 нужно записать эти же данные, но фамилии отсортировать по алфавиту.

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 : integer;

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
{сортировка}

end.

somewhere
15.12.2014, 10:42
Рассматриваем сравнение больше/меньше для двух строк
Без оптимизаций и очевидных действий

1. Обычное сравнение строк - если равны, то (строка1 равна строка2), выход
2. Номер символа = 1
3. Если нет такого символа в строке1 - то (строка1 меньше строка2), выход
4. Если нет такого символа в строке2 - то (строка1 больше строка2), выход
5. Если КодСимвола(НижнийРегистр(с имвол1)) = КодСимвола(НижнийРегистр(с имвол2)) то (Номер символа = Номер символа + 1), (Переход к строке 3)
6. Если КодСимвола(НижнийРегистр(с имвол1)) < КодСимвола(НижнийРегистр(с имвол2)) то (строка1 меньше строка2), выход
7. Если КодСимвола(НижнийРегистр(с имвол1)) > КодСимвола(НижнийРегистр(с имвол2)) то (строка1 больше строка2), выход

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