menu
person

Задача №2921

На вход про­грам­ме подаётся текст за­кли­на­ния, со­сто­я­ще­го не бо

Поиск задачи:

На вход про­грам­ме подаётся текст за­кли­на­ния, со­сто­я­ще­го не более чем из 200 сим­во­лов, за­кан­чи­ва­ю­щий­ся точ­кой (сим­вол «точка» во вход­ных дан­ных един­ствен­ный). Оно было за­шиф­ро­ва­но Гарри Пот­те­ром сле­ду­ю­щим об­ра­зом. Сна­ча­ла Гарри опре­де­лил ко­ли­че­ство букв в самом длин­ном слове, обо­зна­чив по­лу­чен­ное число К (сло­вом на­зы­ва­ет­ся не­пре­рыв­ная по­сле­до­ва­тель­ность ан­глий­ских букв, слова друг от друга от­де­ля­ют­ся лю­бы­ми дру­ги­ми сим­во­ла­ми, длина слова не пре­вы­ша­ет 20 сим­во­лов). Затем он за­ме­нил каж­дую ан­глий­скую букву в за­кли­на­нии на букву, сто­я­щую в ал­фа­ви­те на К букв ранее (ал­фа­вит счи­та­ет­ся цик­ли­че­ским, то есть перед бук­вой А стоит буква Z), оста­вив дру­гие сим­во­лы не­из­мен­ны­ми. Строч­ные буквы при этом оста­лись строч­ны­ми, а про­пис­ные - про­пис­ны­ми. Тре­бу­ет­ся на­пи­сать как можно более эф­фек­тив­ную про­грам­му, ко­то­рая будет вы­во­дить на экран текст рас­шиф­ро­ван­но­го за­кли­на­ния. На­при­мер, если за­шиф­ро­ван­ный текст был таким:

 

Zb Ra Ca,Dab Rа.

 

то ре­зуль­тат рас­шиф­ров­ки дол­жен быть сле­ду­ю­щим:

Се Ud Fd,Gde Ud.

 

По­яс­не­ние.

var f:boolean;

i, k, max: integer;

с,cnew:char;

s:string;

begin

    s:='';

max:=0; k:=0;

f:=false;

repeat

read(c); 

s:=s+c; 

if f then

if с in ['a'..'z','A'..'Z']

then k:=k+1

else begin

   if k>max then max:=k;

   f:=false

end

else {f=false}

if с in ['a'..'z','A'..'Z']

   then

     begin

       f:=true;

       k:=1

     end

until c='.';

for i:=1 to length(s) do

begin

cnew:=chr(ord(s[i])+max);

case s[i] of

'a'..'z': if cnew>'z' then write (chr (ord (cnew)-26))

else write(cnew);

'A'..'Z': if cnew>'Z' then write (chr (ord (cnew)-26))

else write(cnew);

else   write(s[i])

end;

end;

readln

end.

Категория: по информатике | Добавил: Просмотров: 1 | Теги: Об­ра­бот­ка символьных строк | Рейтинг: 2.0/1
Всего комментариев: 0