На вход программы подается текст заклинания, состоящего не более чем из 200 символов, заканчивающийся точкой (символ «точка» во входных данных единственный). Оно было зашифровано Гарри Поттером следующим образом. Сначала Гарри определил количество букв в самом длинном слове, обозначив полученное число K (словом называется непрерывная последовательность английских букв, слова друг от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Затем он заменил каждую английскую букву в заклинании на букву, стоящую в алфавите на К букв далее (алфавит считается циклическим, то есть перед буквой А стоит буква Z), оставив
другие символы неизменными. Строчные буквы при этом остались строчными, а рописные - прописными. Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить на экран текст расшифрованного заклинания.
Например, если зашифрованный текст был таким:
Се Ud Fd Gde Ud.
то результат расшифровки должен быть следующим:
Zb Ra Ca Dab Ra.
Решение задачи №6.
var
st:char;
sl:string[200];
k,max,i,n,x:integer;
begin
k:=0;
max:=0;
n:=0;
repeat
begin
read(st);
sl:=sl+st;
n:=n+1;
if ((ord(st)>64) and (ord(st)<91))or ((ord(st)>96)and(ord(st)<123)) then
k:=k+1
else
if k>max then
begin
max:=k;
k:=0;
end
else
k:=0;
end;
until st='.';
for i:=1 to n do
if ((ord(sl[i])>64) and (ord(sl[i])<91))or ((ord(sl[i])>96)and(ord(sl[i])<123)) then
if (ord(sl[i])>64) and (ord(sl[i])<91) then
if (ord(sl[i])-max)>64 then sl[i]:=char(ord(sl[i])-max)
else
begin
x:=max-(ord(sl[i])-65);
sl[i]:=char(91-x);
end
else
if (ord(sl[i])-max)>96 then sl[i]:=char(ord(sl[i])-max)
else
begin
x:=max-(ord(sl[i])-97);
sl[i]:=char(123-x);
end;
writeln(sl);
end.


