Param58. Описать процедуру DecodeText($$S$$, $$K$$), которая дешифрует текстовый файл с именем $$S$$, зашифрованный с использованием кодового смещения $$K$$ (способ шифрования описан в задании Param57). Используя эту процедуру и зная кодовое смещение $$K$$, расшифровать файл с указанным именем.
Решение:
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 |
program param58; type St=String; var S:St; K:integer; Procedure DecodeText(S:St;K:integer); var F_out,F_in: Text; TempS:St; i,i2:integer; begin Assign(F_in,S); Reset(F_in); Assign(F_out,'~'+S); ReWrite(F_out); While not(eof(F_in)) do begin Readln(F_in,TempS); for i2:=1 to K do begin i:=1; while (i<=Length(TempS)) do begin case ord(TempS[i]) of 129..159,161..173,225..239: TempS[i]:=chr(ord(TempS[i])-1); 128: TempS[i]:=chr(159); 224: TempS[i]:=chr(175); 160: TempS[i]:=chr(239); end; inc(i); end; end; Writeln(F_out,TempS); end; Close(F_out); Close(F_in); Erase(F_in); Rename(F_out,S); end; begin Write('S: '); Readln(S); Write('K: '); Readln(K); DecodeText(S,K); end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: