File73. Дан строковый файл, содержащий даты в формате, описанном в задании File67. Создать новый строковый файл, в котором даты из исходного файла располагались бы в порядке убывания.
Решение:
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 73 74 75 76 77 78 79 80 81 82 |
program File73; type st = String[100]; var Name,S1,S2: St; F_1,F_2: file of St; BExit:Boolean; Procedure Swap(var String2,String1:St); var STemp:String; begin STemp:=String1; String1:=String2; String2:=STemp; end; Function ComparisonDate(String2,String1:St):boolean; var error: Integer; D1,D2 :LongWord; begin val(String1[7]+String1[8]+String1[9]+String1[10]+String1[4]+String1[5]+String1[1]+String1[2],D1,error); val(String2[7]+String2[8]+String2[9]+String2[10]+String2[4]+String2[5]+String2[1]+String2[2],D2,error); if D2<D1 then ComparisonDate:=True else ComparisonDate:=False; end; begin Write('File In: '); Readln(Name); Assign(F_1,Name); Reset(F_1); Write('File out: '); Readln(Name); Assign(F_2,'~'+Name); Rewrite(F_2); while (not eof(F_1)) do begin Read(F_1,S1); Write(F_2,S1); end; Close(F_1); Close(F_2); BExit:=False; While not(BExit) do begin BExit:=True; Assign(F_1,'~'+Name); Reset(F_1); Assign(F_2,Name); Rewrite(F_2); Read(F_1,S1); while (not eof(F_1)) do begin S2:=S1; Read(F_1,S1); if ComparisonDate(S2,S1) then begin Swap(S2,S1); BExit:=False; end; Write(F_2,S2); end; Write(F_2,S1); Close(F_1); Close(F_2); erase(F_1); Rename(F_2,'~'+Name); end; Rename(F_2,Name); end. |
Другие задачи из раздела File можно посмотреть здесь.
Комментарии: