File22. Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания (определение локального экстремума дано в задании File20).
Решение:
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 61 62 63 64 65 66 67 68 69 70 71 72 |
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); //наполняем файл 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); //записываем значения файла F_out_temp в файл F_out в обратном порядке 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. |
Другие задачи из раздела File можно посмотреть здесь.
Комментарии: