File22. Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания (определение локального экстремума дано в задании File20).
>Решение Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | program File22; var S:String; F_in: File of Real; F_out,F_out_temp: File of Integer; El2,El1,El:Real; temp,i,len:integer; begin Write('File: '); Readln(S); Assign(F_in,S); Reset(F_in); Write('File_out: '); Readln(S); Assign(F_out,S); ReWrite(F_out); Assign(F_out_temp,'~'+S); ReWrite(F_out_temp); Read(F_in,El1); Read(F_in,El); El2:=El1; I:=1; if (El1<>El) then Write(F_out_temp,i); while (not eof(F_in)) do begin El2:=El1; El1:=El; Read(F_in,El); inc(i); if ((El<El1) and (El1>El2)) or ((El>El1) and (El1<El2)) then Write(F_out_temp,i); end; inc(i); if El1<>El then Write(F_out_temp,i); Close(F_in); Close(F_out_temp); Reset(F_out_temp); len:=1; while (not eof(F_out_temp)) do begin Read(F_out_temp,temp); inc(len); end; while (len>1) do begin Close(F_out_temp); Reset(F_out_temp); i:=1; while (not eof(F_out_temp)) and (i<>len) do begin Read(F_out_temp,temp); inc(i); end; Write(F_out,temp); Writeln(temp); dec(len); end; Close(F_out_temp); erase(F_out_temp); Close(F_out); end. |
program file22;
var
f1,f2,f3:file of integer;
s1,s2,s3:string;
num2,num1,el1,el2,el3,num,temp,i,i1:integer;
begin
writeln(‘vhodnoy file’);
readln(s1);
assign(f1,s1);
s2:=’file21data’;
assign(f2,s2);
s3:=’file21dataexit’;
assign(f3,s3);
{$I-}
writeln(‘original’);
reset(f1);
while not eof(f1) do begin
read(f1,i);write(i,’ ‘);
end;close(f1);
writeln();
reset(f1);
if IOResult=0 then begin
rewrite(f2);
read(f1,temp);
el1:=temp;
read(f1,temp);
el2:=temp;
num:=0; num1:=2;
while not eof(f1) do begin
inc(num1,1);
read(f1,temp);
el3:=temp;
if ((el2>el1) and (el2>el3) or (el2<el1) and (el2<el3) ) then begin write(f2,num1-1);inc(num,1); end;
el1:=el2; el2:=el3;
//inc(num,1);
end;//endif
close(f1);
close(f2);
end;//iores
rewrite(f3);
reset(f2);
num2:=num1-num;
while not eof(f2) do begin
read(f2,i1);
seek(f3,num1-1-num2);
write(f3,i1);
dec(num1,1);
end;close(f2);
close(f3);
writeln('itog:');
reset(f3);
while not eof(f3) do begin
read(f3,i);write(i,' ');
end;close(f3);
end.