program lb9;
uses crt;
const ten=10;
type
anketa=record
name:string[20];
mark1:byte;
mark2:byte;
born_date:integer;
end;
groupe = array[1..ten] of anketa;
var choice:integer;
f:file of anketa;
procedure fill;
var r:anketa;
begin
writeln('Name:');
readln(r.name);
writeln('Born date(year):');
readln(r.born_date);
writeln('mark1 and mark2:');
readln(r.mark1);
readln(r.mark2);
seek (f,filesize(f));
write(f,r);
end;
procedure print_file;
var r:anketa;
begin
seek (f,0);
while not eof (f) do
begin
read (f,r);
writeln (r.name:10, r.mark1:3, r.mark2:3, r.born_date:5);
end;
end;
function to_arr():groupe;
var r:anketa; i:integer; g:groupe;
begin
seek (f,0);
i:=1;
while not eof (f) do begin
read (f,r);
g[i]:=r;
i:=i+1;
end;
to_arr:=g;
end;
procedure del_2(arr:groupe);
var i,j:integer; copy:groupe;
begin
j:=1;
for i:=1 to ten do begin
if (arr[i].mark1) and (arr[i].mark2) > 2 then begin
copy[j]:=arr[i];
j:=j+1;
end;
end;
rewrite(f);
seek (f,0);
for i:= 1 to j-1 do
write (f,copy[i]);
end;
procedure print_name(arr:groupe);
var i:integer; sr:real;
begin
sr:=0;
for i:=1 to ten do begin
with arr[i] do begin
sr:=(mark1+mark2)/2;
writeln(name:10, ' ', sr:3);
end;
end;
end;
procedure print_2005;
var r:anketa;
begin
seek (f,0);
while not eof (f) do begin
read (f,r);
if r.born_date < 2005 then writeln(r.name:10, r.born_date:5);
end;
end;
begin
clrscr;
writeln('Create new file (data.dat) ?');
writeln('1 - YES');
writeln('2 - NO');
readln(choice);
if choice = 1 then rewrite (f,'data.dat')
else begin
assign (f,'data.dat');
reset (f);
end;
while true do
begin
writeln();
WriteLn('Menu':10);
WriteLn('1. Add new student.');
WriteLn('2. Print all records.');
WriteLn('3. Print average marks.');
WriteLn('4. Show students from 2005 year.');
WriteLn('5. Delete students with 2.');
WriteLn('6. Rewrite file.');
WriteLn('0. Exit');
readln(choice);
if choice=1 then fill();
if choice=2 then print_file();
if choice=3 then print_name(to_arr);
if choice=4 then print_2005();
if choice=5 then del_2(to_arr);
if choice=6 then rewrite(f);
if choice=0 then break;
end;
close(f);
end.