Вывести сначала все фамилии на А, а порядок остальных не важен - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Вывести сначала все фамилии на А, а порядок остальных не важен, программа правильная как её сделать через процедуру?
Листинг программы
  1. type student = record
  2. Name :string;
  3. Surname :string;
  4. end;
  5. var
  6. i: integer;
  7. students: array[1..20] of student;
  8. f:text;
  9. begin
  10. assign(f,'fio.txt');
  11. reset(f);
  12. writeln('Исходные Фамилии');
  13. for i:=1 to 20 do
  14. begin
  15. readln(f,students[i].Surname);
  16. write(students[i].Surname:4);
  17. end;
  18. for i:=1 to 20 do
  19. if students[i].Surname[1] = 'А' then
  20. writeln('Фамилия: ',students[i]);
  21. for i:=1 to 20 do if students[i].Surname[1] <> 'А' then writeln('Фамилия: ',students[i]);
  22. close(f);
  23. end.

Решение задачи: «Вывести сначала все фамилии на А, а порядок остальных не важен»

textual
Листинг программы
  1. type student = record
  2.                 Name :string;
  3.                 Surname :string;
  4.                end;
  5.      Tst=array[1..20] of student;
  6. procedure Sort(var st:Tst);
  7. var  x,y:integer;
  8.      t:student;
  9. begin
  10.       x:=19;
  11.       repeat
  12.         if st[x].Surname[1]<>'A' then
  13.          begin
  14.            t.Surname:=st[x].Surname;
  15.            for y:=x to 19 do
  16.             st[y].Surname:=st[y+1].Surname;
  17.            st[20].Surname:=t.Surname;
  18.          end;
  19.         Dec(x);
  20.       until x<1;
  21. end;
  22. var  i,j: integer;
  23.      students: Tst;
  24.      f:text;
  25.      t:student;
  26. begin
  27.      j:=0;
  28.      assign(f,'fio.txt');
  29.      reset(f);
  30.      writeln('Ishodnie familii'); Writeln;
  31.      for i:=1 to 20 do
  32.       begin
  33.         readln(f,students[i].Surname);
  34.         if j=4
  35.          then begin
  36.                 Writeln(students[i].Surname:15);
  37.                 j:=0;
  38.               end
  39.          else begin
  40.                 Write(students[i].Surname:15);
  41.                 Inc(j);
  42.               end;
  43.       end;
  44.      Close(f);
  45.      Sort(students);
  46.      Writeln;
  47.      Writeln('Konecniy spisok:'); Writeln;
  48.      j:=0;
  49.      for i:=1 to 20 do
  50.       if j=4
  51.        then begin
  52.               Writeln(students[i].Surname:15);
  53.               j:=0;
  54.             end
  55.        else begin
  56.               Write(students[i].Surname:15);
  57.               Inc(j);
  58.             end;
  59.       Readln;
  60. end.

Объяснение кода листинга программы

  1. Создается тип данных student, который представляет собой запись с полями Name и Surname.
  2. Создается массив типа student с именем Tst и длиной 20 элементов.
  3. Определяется процедура Sort, которая принимает в качестве параметра переменную st типа Tst. В этой процедуре происходит сортировка массива Tst по фамилии студента.
  4. В основной программе создается переменная students типа Tst и инициализируется значением по умолчанию.
  5. Задается файл fio.txt и считывается его содержимое в переменную students.
  6. Выводится список фамилий студентов, отсортированный по фамилии. Если в файле есть 4 фамилии одинакового типа, то эти фамилии выводятся вместе.
  7. После считывания всех фамилий происходит вызов процедуры Sort для сортировки массива students.
  8. Выводится окончательный список фамилий студентов, отсортированный по фамилии.
  9. Программа завершается вызовом функции Readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы