Вывести сначала все фамилии на А, а порядок остальных не важен - Turbo Pascal
Формулировка задачи:
Вывести сначала все фамилии на А, а порядок остальных не важен, программа правильная
как её сделать через процедуру?
Решение задачи: «Вывести сначала все фамилии на А, а порядок остальных не важен»
textual
Листинг программы
type student = record
Name :string;
Surname :string;
end;
Tst=array[1..20] of student;
procedure Sort(var st:Tst);
var x,y:integer;
t:student;
begin
x:=19;
repeat
if st[x].Surname[1]<>'A' then
begin
t.Surname:=st[x].Surname;
for y:=x to 19 do
st[y].Surname:=st[y+1].Surname;
st[20].Surname:=t.Surname;
end;
Dec(x);
until x<1;
end;
var i,j: integer;
students: Tst;
f:text;
t:student;
begin
j:=0;
assign(f,'fio.txt');
reset(f);
writeln('Ishodnie familii'); Writeln;
for i:=1 to 20 do
begin
readln(f,students[i].Surname);
if j=4
then begin
Writeln(students[i].Surname:15);
j:=0;
end
else begin
Write(students[i].Surname:15);
Inc(j);
end;
end;
Close(f);
Sort(students);
Writeln;
Writeln('Konecniy spisok:'); Writeln;
j:=0;
for i:=1 to 20 do
if j=4
then begin
Writeln(students[i].Surname:15);
j:=0;
end
else begin
Write(students[i].Surname:15);
Inc(j);
end;
Readln;
end.
Объяснение кода листинга программы
- Создается тип данных
student, который представляет собой запись с полямиNameиSurname. - Создается массив типа
studentс именемTstи длиной 20 элементов. - Определяется процедура
Sort, которая принимает в качестве параметра переменнуюstтипаTst. В этой процедуре происходит сортировка массиваTstпо фамилии студента. - В основной программе создается переменная
studentsтипаTstи инициализируется значением по умолчанию. - Задается файл
fio.txtи считывается его содержимое в переменнуюstudents. - Выводится список фамилий студентов, отсортированный по фамилии. Если в файле есть 4 фамилии одинакового типа, то эти фамилии выводятся вместе.
- После считывания всех фамилий происходит вызов процедуры
Sortдля сортировки массиваstudents. - Выводится окончательный список фамилий студентов, отсортированный по фамилии.
- Программа завершается вызовом функции
Readln.