Program P92;
 { Accesul direct la fişiere de tipul FisierElev }
type Elev=record
             Nume : string;
             Prenume : string;
             NotaMedie : real
          end;
     FisierElevi=file of Elev;

var FE : FisierElevi;
     E : Elev;
   str : string;
  i, n : integer;
     r : char;

begin
 write('Daţi numele fişierului:  ');
 readln(str);
 assign(FE, str);
 reset(FE);
 n:=FileSize(FE);
 writeln('Fişierul ', str, ' are ', n, ' componente');
 writeln('Numeraţia componentelor: 0..', n-1);
 write('Daţi numărul componentei:  '); readln(i);
 if i>n-1 then writeln('Eroare: componentă inexistentă')
   else
     begin
       Seek(FE, i);      { poziţionare pe componenta i }
       read(FE, E);      { citirea componentei selectate }
       writeln(E.Nume, ' ', E.Prenume, E.NotaMedie :5:2);
       write('Modificňm componenta? [d/n]'); readln(r);
       if r='d' then
         begin
           write('Numele:  '); readln(E.Nume);
           write('Prenumele:  '); readln(E.Prenume);
           write('Note medie:  '); readln(E.NotaMedie);
           Seek(FE, i);  { poziţionare pe componenta i }
           write(FE, E); { scrierea componentei modificate }
         end;
     end;
 close(FE);
 readln;
end.