File44. Даны три файла одного и того же типа, но разного размера. Заменить содержимое самого длинного файла на содержимое самого короткого.
Решение:
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 |
program File44; var Name1,Name2,Name3:String; F1,F2,F3: File; FS1,FS2,FS3 : longint; procedure ReplaceFile(NameOld,NameNew:String); var F,F_R :File; Buf : Char; begin Assign(F,NameOld); Reset(F, 1); Assign(F_R,NameNew); Rewrite(F_R,1); while not Eof(f) do begin BlockRead(F, Buf, SizeOf(char)); BlockWrite(F_R, Buf, sizeof(char)); end; Close(F); Close(F_R); end; begin Write('File1: '); Readln(Name1); Assign(F1,Name1); Reset(F1); Write('File2: '); Readln(Name2); Assign(F2,Name2); Reset(F2); Write('File3: '); Readln(Name3); Assign(F3,Name3); Reset(F3); FS1:=filesize(F1); FS2:=filesize(F2); FS3:=filesize(F3); Close(F1); Close(F2); Close(F3); if ((FS2<=FS1) and (FS1<=FS3)) or ((FS2>=FS1) and (FS1>=FS3)) then if FS2<FS3 then ReplaceFile(Name2,Name3) else ReplaceFile(Name3,Name2); if ((FS1<=FS2) and (FS2<=FS3)) or ((FS1>=FS2) and (FS2>=FS3)) then if FS1<FS3 then ReplaceFile(Name1,Name3) else ReplaceFile(Name3,Name1); if ((FS1<=FS3) and (FS3<=FS2)) or ((FS1>=FS2) and (FS2>=FS3)) then if FS1<FS2 then ReplaceFile(Name1,Name2) else ReplaceFile(Name2,Name1); end. |
Другие задачи из раздела File можно посмотреть здесь.
Комментарии: