program isaenkova; uses crt; const nmax=30; type Tname=record fio:string; nos:integer; otv:array[1..5] of string; resheno:integer; end; mas=array[1..nmax] of Tname; prot=array[1..5] of real; var a:mas; b:prot; kol:integer; n:integer; f_otvet,f_bd:text; function strtofloat(var st:string): real; var x:real; code:integer; begin val(st,x,code);{val proizvodit preobraazovanie iz stroki st v vew/ peremennuu X,a v code zapisivaetsa kod owibki} {(esli net owibok to 0) esli owibka, to mi dsdjlbv soobwenie o nej i zakrivaem progu} if code <> 0 then begin writeln('Nevernoe znachenie dannih'); readln; halt; end; strtofloat:=x; end; procedure vvod; var i,j,code:integer; st : string; begin {ídirektivoj otklu4aem proverku kompilatora na owibki vvoda-vivoda,otkrivaem fail, potom smotrim peremennuu ioresult,} { ona ne 0, esli proizowla owibka vvoda-vivoda.gde minus otklu4aem proverku,gde plus - vklu4aem.kod owibki zapisivaetsa} { v peremennuu ioresult} n:=0; assign(f_otvet,'otvet.txt'); {$I-}reset(f_otvet);{$I+} if ioresult<>0 then begin writeln('fail ne naiden'); halt end; for i:=1 to 5 do begin readln(f_otvet,b[i]); end; close(f_otvet); assign(f_bd,'bd.txt'); {$I-}reset(f_bd);{$I+} if ioresult<>0 then begin writeln('fail ne naiden'); halt end; i:=1; while eof(f_bd)=false do begin readln(f_bd,a[i].fio);{nomer wkoli s4itivaem v stroku st, potom val preobrazuet stoku st v 4islo, zapisivaet v a[i].nos} { potom soobwenie ob owibke i vihod iz programmi.owibka v slu4ae esli kod ne raven 0} readln(f_bd,st); val(st,a[i].nos,code); if code <> 0 then begin writeln('Nevernoe znachenie nomera wkoli'); close(f_bd); readln; halt; end; for j:=1 to 5 do readln(f_bd,a[i].otv[j]); i:=i+1; n:=n+1; end; if i = 1 then begin writeln('Fayl pust'); close(f_bd); readln; halt; end; close(f_bd); end; procedure proverka(var n:integer); var i,j,i1:integer; good:boolean; reshenie:real; begin for i:=1 to n do begin {good - istina, esli familia tolko iz bukv, if not ((a[i].fio[i1] in ['a'..'z'])} { or (a[i].fio[i1] in ['A'..'Z'])) - proverka, esli net bukvi v spiskah a..z č A..Z, esli net to owibka.halt - vihod} { iz programmi} good := true; for i1 := 1 to length(a[i].fio) do if not ((a[i].fio[i1] in ['a'..'z']) or (a[i].fio[i1] in ['A'..'Z'])) then begin writeln('Neverno vvedena familia u4enika'); readln; halt; end; for j:=1 to 5 do begin reshenie:=strtofloat(a[i].otv[j]); if reshenie=b[j] then inc(a[i].resheno); end; end; end; procedure sort(var n:integer); var i,j,k,f:integer; nsk,nskk,nski:integer; ai:Tname; begin k:=0; nski:=1; nsk:=a[1].nos; for i:=1 to n-1 do for j:=i to n do if (a[i].nos>a[j].nos) then begin ai:=a[i]; a[i]:=a[j]; a[j]:=ai; end; nskk:=0; for f:=1 to n do begin nski:=nskk+1; nsk:=a[nskk+1].nos; repeat k:=k+1; until (nsk<>a[k].nos) or (k>n); nskk:=k-1; for i:=nski to nskk-1 do for j:=i to nskk do if (a[i].resheno