String65. Дано зашифрованное предложение на русском языке (способ шифрования описан в задании String63) и его расшифрованный первый символ $$C$$. Найти кодовое смещение $$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 |
program String65; var S:String; i,i2,K:integer; C:char; begin Write('S: '); Readln(S); Write('C:'); Readln(C); case ord(C) of 128..159 : K:=ord(S[1])-ord(C); 160..175 : if ord(S[1]) in [160..175] then K:=ord(S[1])-ord(C) else K:=ord(S[1])-48-ord(C); 224..239 : if ord(S[1]) in [224..239] then K:=ord(S[1])-ord(C) else K:=ord(S[1])+48-ord(C); end; Writeln(K); if k<0 then K:=32+k; Writeln(K); for i2:=1 to K do begin i:=1; while (i<=Length(S)) do begin case ord(S[i]) of 129..159,161..173,225..239: S[i]:=chr(ord(S[i])-1); 128: S[i]:=chr(159); 224: S[i]:=chr(175); 160: S[i]:=chr(239); end; inc(i); end; end; Writeln(S); end. |
Другие задачи из раздела String можно посмотреть здесь.
Комментарии: