Записи. Файлы прямого доступа. Вывести абитуриентов, набравших меньше 12 баллов

Jane1

Составить файл с именем ABITUR, состоящий из данных по сдаче экзаменов абитуриентами. Указать для каждого абитуриента его код и оценки по трем вступительным экзаменам (записи). Исключить из файла элементы, относящиеся к абитуриентам, которые набрали меньше 12 баллов, использовать прямой доступ к элементам файла. Вывести на экран измененный файл ABITUR и новый с именем ICKL, с данными абитуриентов, набравших меньше 12 баллов.
program 666;
uses crt;
type otcenk=record
kod:string[12];
otcenka1,otcenka2,otcenka3:integer;
end;
var f,h:file of otcenk;
g:otcenk;
n,i,sum:integer;
begin clrscr;
assign(f,'C:\Users\Koshel\Desktop\Paskal\ABITUR.txt');
rewrite(f);
readln(n);
for i:=1 to n do
begin
write('kod='); readln(g.kod);
write('otcenka1='); readln(g.otcenka1);
write('otcenka2='); readln(g.otcenka2);
write('otcenka3='); readln(g.otcenka3);
write(f,g);
end;
close(f);
assign(f,'C:\Users\Desktop\Paskal\ABITUR.txt');
assign(h,'C:\Users\Desktop\Paskal\ICKL.txt');
reset(f);
rewrite(h);
while not eof(f) do begin
1 ответ

Jane1

Условия задач не совсем понял. Но вроде бы так
program sss;
uses crt;
type usp=record
fio:string[50];
kod:integer;
pr:array[1..10] of byte;
end;
f=file of usp;
var
fst,fst2:f;
st:usp;
i,sum:integer;
v:char;
procedure input;
begin
rewrite(fst);
repeat
writeln('Введите фамилию абитруента');
readln(st.fio);
if st.fio<>'*' then begin
writeln('Введите код студента');
readln(st.kod);
for i:=1 to 3 do begin
writeln('Введите ',i,' оценку');
readln(st.pr[i]);
end;
write(fst,st);
end;
until (st.fio)='*';
close(fst);
end;
 procedure output(var z:f);
 begin
reset(z);
WriteLn('|','Фамилия':10,'|','Kod':4,'|','Ocenka1':4,'|','ocenka2':4,'|','ocenka3':4,'|');
while not eof(z) do begin
read(z,st);
write('|',st.fio:10,'|');
write(st.kod:4,'|');
for i:=1 to 3  do begin
write(st.pr[i]:7,'|');
end;
writeln;
 
 end;
 readln;
close(z);
end;
 
begin
clrscr;
 
{$I-}
assign(fst,'c:\abit.01');
assign(fst2,'c:\iskl.02');
reset(fst);
if ioresult<>0 then begin writeln('Файл не существует');
input
end
else  begin
close(fst);
writeln('Файл существует');
writeln('Заменяем y/n');
readln(v);
if v='y' then input;
end;
{$I-}
reset(fst);
rewrite(fst2);
while not eof(fst) do begin
read(fst,st);
sum:=0;
for i:=1 to 3 do
sum:=sum+st.pr[i];
if sum<12 then write(fst2,st);
 
end;
                 close(fst);
                 close(fst2);
                 writeln;
 
 
        writeln('И С Х О Д Н Ы Й');
        output(fst);
        writeln;
        Writeln('СТУДЕНТЫ НАБРАВШИЕ МЕНЬШЕ 12 БАЛЛОВ');
        writeln;
        output(fst2);
        end.