{$I-} {$N+} const n=35; type arr=array[1..n] of double; function newfile(filename: string; n: integer): integer; var i: integer; f: text; begin randomize; newfile:=n; writeln('Будет создан новый файл ',filename,' и заполнен ',n,' случайными числами'); assign(f,filename); rewrite(f); if IOResult<>0 then begin {close(f);} writeln('Файл ',filename,' не создан'); newfile:=-1; exit; end; for i:=1 to n do begin write(f,(25-(random*500)/10):8:3); if (i mod 10)=0 then writeln(f,''); end; writeln(f,''); close(f); end; function readfromfile(filename: string; n: integer; var a: arr): integer; var i: integer; f: text; begin readfromfile:=n; writeln('Поиск и чтение файла ',filename,' ...'); assign(f,filename); reset(f); if IOResult<>0 then begin {close(f);} writeln('Файл ',filename,' не существует'); readfromfile:=-1; exit; end; for i:=1 to n do begin if SeekEof(f) then begin close(f); writeln('В файле ',filename,' обнаружено ',i-1,' элементов вместо ',n); readfromfile:=i-1; exit; end; read(f,a[i]); if IOResult<>0 then begin close(f); writeln('Файл ',filename,' не соответствует формату'); readfromfile:=-1; exit; end; end; close(f); end; function writetofile(filename: string; n: integer; var a: arr): integer; var i: integer; f: text; begin writetofile:=n; writeln('Запись в конец существующего файла ',filename,' ...'); assign(f,filename); append(f); if IOResult<>0 then begin {close(f);} writeln('Файл ',filename,' не существует'); writetofile:=-1; exit; end; writeln(f,''); writeln(f,'After processing:'); for i:=1 to n do begin write(f,a[i]:8:3); if (i mod 10)=0 then writeln(f,''); end; writeln(f,''); close(f); end; function writetonewfile(filename: string; n: integer; var a: arr): integer; var i: integer; f: text; begin writetonewfile:=n; writeln('Запись в файл ',filename,' ...'); assign(f,filename); rewrite(f); if IOResult<>0 then begin {close(f);} writeln('Файл ',filename,' не создан'); writetonewfile:=-1; exit; end; for i:=1 to n do begin write(f,a[i]:8:3); if (i mod 10)=0 then writeln(f,''); end; writeln(f,''); close(f); end; var filename1,filename2: string; c,p: arr; i,m: integer; min,max: double; begin writeln('Введите имя входного файла:'); repeat readln(filename1); until length(filename1)>0; if readfromfile(filename1,n,c)<n then begin if newfile(filename1,n)<n then begin writeln(''); writeln('Нажмите ENTER'); readln; halt; end; readfromfile(filename1,n,c); end; writeln(''); writeln('Исходный массив K:'); for i:=1 to n do write(c[i]:8:3); writeln(''); min:=c[1]; max:=c[1]; for i:=1 to n do begin; if c[i]<min then min:=c[i]; if c[i]>max then max:=c[i]; end; writeln(''); writeln('Минимальное значение в массиве K: ',min:8:3); writeln('Максимальное значение в массиве K: ',max:8:3); m:=0; for i:=1 to n do if c[i]>((max+min)/3) then begin inc(m); p[m]:=c[i]; end; writeln(''); writeln('Массив M из тех элементов K, значение которых больше (max+min)/3 =',((max+min)/3):8:3,':'); for i:=1 to m do write(p[i]:8:3); writeln(''); writeln(''); writeln('Введите имя выходного файла:'); repeat readln(filename2); until length(filename2)>0; if filename2=filename1 then writetofile(filename2,m,p) else writetonewfile(filename2,m,p); writeln(''); writeln('Нажмите ENTER'); readln; end. |