Файл f содержит записи следующей структуры:- имя студента;- пол;- рост;- оценки по трем экзаменам.Написать процедуру , выводящую на экран имена студенток, рост которых выше среднего — Pascal(Паскаль)

uses crt;
type stud=record
          im:string[10];
          pl:char;
          rs:140..200;
          oc:array[1..3] of 2..5;
          end;
    fail=file of stud;
procedure Rost(var f:fail;sr:real);
var s:stud;
    k,i:byte;
begin
writeln('Список студенток со средним ростом выше среднего:');
writeln('         (средний рост=',sr:0:2,')');
writeln;
writeln('-----------------------------------');
writeln('|    Имя    | Пол | Рост | Оценки |');
writeln('-----------------------------------');
reset(f);
k:=0;
while not eof(f) do
 begin
  read(f,s);
  with s do
  if (rs>sr)and(pl='ж') then
   begin
    k:=1;
    gotoXY(1,whereY);write('| ',im);
    gotoXY(13,whereY);write('|',pl:3);
    gotoXY(19,whereY);write('|',rs:4);
    gotoXY(26,whereY);write('| ');
    for i:=1 to 3 do write(oc[i]:2);
    gotoXY(35,whereY);writeln('|');
   end;
 end;
writeln('------------------------------------');
if k=0 then write('Студенток с ростом, выше среднего нет!');
write('Press Enter...');
end;
var f:fail;
    s:stud;
    c:char;
    n,i:byte;
    sr:real;
begin
clrscr;
assign(f,'student');
rewrite(f);
writeln('Введите данные о студентах, окончание ввода Esc');
n:=0;
repeat
n:=n+1;
writeln('Запись ',n);
with s do
 begin
  write(' Имя: ');readln(im);
  repeat
  write(' Пол [м,ж]: ');
  readln(pl);
  until pl in ['м','ж'];
  repeat
  write(' Рост [140..200]: ');
  readln(rs);
  until rs in [140..200];
  writeln(' Введите 3 оценки [2-5]');
  for i:=1 to 3 do
   begin
    repeat
    write('  оценка ',i,' ' );
    readln(oc[i]);
    until oc[i] in [2..5];
   end;
  write(f,s);
 end;
c:=readkey;
until c=#27;
clrscr;
writeln('Полный список студентов:');
writeln;
writeln('-----------------------------------');
writeln('|    Имя    | Пол | Рост | Оценки |');
writeln('-----------------------------------');
reset(f);
sr:=0;
n:=filesize(f);
while not eof(f) do
 begin
  read(f,s);
  with s do
   begin
    gotoXY(1,whereY);write('| ',im);
    gotoXY(13,whereY);write('|',pl:3);
    gotoXY(19,whereY);write('|',rs:4);
    gotoXY(26,whereY);write('| ');
    for i:=1 to 3 do write(oc[i]:2);
    gotoXY(35,whereY);writeln('|');
    sr:=sr+rs;
   end;
 end;
writeln('-----------------------------------');
sr:=sr/n;
close(f);
write('Press Enter...');
readln;
clrscr;
Rost(f,sr);
readln
end.

Leave a Comment

91 − = 89