Вывести с файла прозвища учеников по их росту

Рейтинг: 0Ответов: 1Опубликовано: 31.03.2015

В файле содержатся данные об учениках: рост и фамилии. Вывести фамилии учеников в порядке возрастания их роста. я так думаю нужно на типизированных файла ( привязка росту к прозвищу, или же обычный txt и разбиение строки ) прошу помощи

что первое взбрело в голову

    program main;
uses crt;
type student = record
    name: string[20];
    surname: string[20];
    ff:integer;
    end;
var 
    s:student;
    f:file of student;
    i, fff: integer;
begin

    Assign(f, 'student__.dat');
    Rewrite(f);
    writeln('Enter data struct: ');

    for i := 1 to 3 do begin
        writeln(i, ')' );
        write('Name: '); readln(s.name);
        write('Surname: '); readln(s.surname); 
        write('Rost: '); readln(s.ff); 

        write(f, s);   
        writeln('==========================' ); 
    end;

    closeFile(f);
    Reset(f);
    Seek (f, 0);

    fff := 0;
    while not Eof(f) do begin
        read(f, s);
        if ( s.ff > fff ) then begin
            fff := s.ff;
            writeln(s.name + ' ' + s.surname, ' ( ', s.ff, ' )' );
        end;
    end;

    closeFile(f);

end. 

Ответы

▲ 1Принят
type
  Students = array of student;
var
  StudentsCount: Integer;
...

  // читаем все в массив
  StudentsCount := 0;
  while not Eof(f) do
  begin
    SetLength(Students, StudentsCount + 1);
    read(f, Students[StudentsCount]);
    StudentsCount := StudentsCount + 1;
  end;

  // сортируем
  ...

  // выводим
  for i := 0 to StudentsCount - 1 do
    writeln(s.name + ' ' + s.surname, ' ( ', s.ff, ' )' );

Сортировку сами осилите?