Text60. Дана строка и файл с русским текстом, зашифрованным по правилу, описанному в задании Text59. Данная строка представляет собой первую расшифрованную строку текста. Расшифровать остальные строки и заменить в файле зашифрованный текст на расшифрованный. Если информации для расшифровки недостаточно, то исходный файл не изменять.
Решение:
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 83 84 85 86 87 88 |
program Text60; var F_in,F_out: Text; Name,S,SKey,STemp:string; C:Char; i:integer; Function Key(Code,EnCode:Char):Char; var itemp:integer; begin if (ord(Code) in [224..239]) and (ord(EnCode) in [224..239]) then begin itemp:=ord(Code)-ord(EnCode); if itemp<0 then itemp:=itemp+31; end else if (ord(Code) in [160..175,224..239]) and (ord(EnCode) in [160..175,224..239]) then begin itemp:=ord(Code)-ord(EnCode); if itemp>49 then itemp:=itemp-49; if itemp<0 then itemp:=itemp+79; end else itemp:=-1; if itemp<>-1 then begin Key:=chr(48+itemp); end else Key:='-'; end; Function EnCode(C,pos:char): char; var N,error:integer; i:Integer; begin val(pos,N,error); for i:=1 to N do begin if (ord(C) in [129..159,161..175,225..239]) then C:=chr(ord(C)-1) else if (ord(C)=128) then C:=chr(159) else if (ord(C)=160) then C:=chr(239) else if (ord(C)=224) then C:=chr(175); end; EnCode:=C; end; begin Write('S: '); Readln(S); Write('File name: '); Readln(Name); Assign(F_in,Name); Reset(F_in); SKey:='----------'; i:=0; While not eoln(F_in) do begin Read(F_in,C); inc(i); SKey[(i-1 mod 10)+1]:=Key(C,S[(i-1 mod 10)+1]); end; Close(F_in); Reset(F_in); Assign(F_out,'~'+Name); Rewrite(F_out); While not eof(F_in) do begin i:=0; While not eoln(F_in) do begin inc(i); Read(F_in,C); C:=EnCode(C,SKey[((i-1) mod 10)+1]); Write(F_out,C); end; Readln(F_in); Writeln(F_out); end; Close(F_in); Close(F_out); end. |
Другие задачи из раздела Text можно посмотреть здесь.
Комментарии:
Комментарии 1