Дан файл записей. Одно из полей записи ФИО. Вывести все записи в виде таблицы в алфавитном порядке ФИО

Raptoridze

Я сделал ввод файла, а вот как сделать такой вывод не знаю. Помогите пожалуйста. Каждая запись содержит поля: • ФИО; • пол; • группа; • код специальности; • наименование специальности; оценки по предметам: • информатика; • дискретная математика; • математический анализ; • высшая алгебра
type
  oc=record
  inf:integer;
  dm:integer;
  matan:integer;
  val:integer; end;
 fktipm=record
  fio:string;
  pol:char;
  gr:integer;
  ks:string;
  ns:string;
  ball:oc;
 end;
var x:fktipm; p:integer; f:file of fktipm;
procedure vvod;
var x:fktipm; pr:integer;
begin
 rewrite(f);
 while pr<>2 do begin
 writeln('Введите данные о студенте:');
 write('ФИО: '); readln(x.fio);
 write('Пол: '); readln(x.pol);
 write('Группа: '); readln(x.gr);
 write('Код специальности: '); readln(x.ks);
 write('Наименование специальности: '); readln(x.ns);
 write('Оценка по информатике: '); readln(x.ball.inf);
 write('Оценка по дискретной математике: '); readln(x.ball.dm);
 write('Оценка по математическому анализу: '); readln(x.ball.matan);
 write('Оценка по высшей алгебре: '); readln(x.ball.val);
 write(f,x);
 writeln('Запись создана.');
 writeln('Продолжить ввод данных?');
 writeln('1. Да');
 writeln('2. Нет');
 write('Введите номер: '); readln(pr);
 end;
 close(f);
 end;
begin
assign(f,'file.txt');
while p<>6 do begin
writeln('1. Создание файла и ввод информации');
writeln('2. Вывод записей');
writeln('3. Редактирование записи');
writeln('4. Удаление записи');
writeln('5. Вывести номер группы, в которой больше всего студентов, сдавших сессию без троек и их ФИО');
writeln('6. Завершение работы;');
writeln;
writeln('Введите номер:'); readln(p);
if p=1 then vvod;
end;
end.
3 ответа

Raptoridze

uses wincrt;
type
  oc=record
           inf:integer;
  dm:integer;
  matan:integer;
  val:integer; end;
 fktipm=record
  fio:string;
  pol:char;
  gr:integer;
  ks:string;
  ns:string;
  ball:oc;
 end;
 fil= file of fktipm;
var x,y,sp:fktipm; p:integer; f:fil;
procedure vvod;
var x:fktipm; pr:integer;
begin
 assign(f,'file.txt');
 rewrite(f);
 while pr<>2 do begin
       writeln('Введите данные о студенте:');
        write('ФИО: '); readln(x.fio);
        write('Пол: '); readln(x.pol);
        write('Группа: '); readln(x.gr);
         write('Код специальности: '); readln(x.ks);
          write('Наименование специальности: '); readln(x.ns);
         write('Оценка по информатике: '); readln(x.ball.inf);
          write('Оценка по дискретной математике: '); readln(x.ball.dm);
           write('Оценка по математическому анализу: '); readln(x.ball.matan);
          write('Оценка по высшей алгебре: '); readln(x.ball.val);
         write(f,x);
          writeln('Запись создана.');
        writeln('Продолжить ввод данных?');
          writeln('1. Да');
         writeln('2. Нет');
         write('Введите номер: ');
          readln(pr);
                      end;
 close(f);
 end;
 procedure sort;
 var q,i,j:integer;

 begin
assign(f,'file.txt');
reset(f);

for i:=0 to filesize(f)-2 do
    for j:=i+1 to filesize(f)-1 do
     begin
          seek(f,i);
          read(f,x);
           seek(f,j);
            read(f,y);
          if x.fio>y.fio then
                  begin
                  sp:=x;
                  x:=y;
                  y:=sp;
                  seek(f,i);
                  write(f,x);
                  seek(f,j);
                  write(f,sp);
                  end;
     end;
close(f);
reset(f);
writeln('ФИО:                ','Пол: ','Группа: ','Код специальности: ','Наименование специальности: ');
while not eof(f) do begin
      read(f,x);
      writeln(x.fio:2,x.pol:7,x.gr:7,x.ks:7);

                      end;

 end;
begin
{assign(f,'file.txt'); }
while p<>6 do begin
      writeln('1. Создание файла и ввод информации');
      writeln('2.Сортировка и Вывод записей');
      writeln('3. Редактирование записи');
      writeln('4. Удаление записи');
      writeln('5. Вывести номер группы, в которой больше всего студентов, сдавших сессию без троек и их ФИО');
      writeln('6. Завершение работы;');
      writeln;
      writeln('Введите номер:'); readln(p);
      case p of
           1:  vvod;
           2: sort;
           end;
           end;
end.


Raptoridze

Спасибо большое, но за это время я успел сам справиться)


Raptoridze

Спасибо большое, но за это время я успел сам справиться)
Бывает))