Размер шрифта: A AA Изображения Выключить Включить Цвет сайта Ц Ц Ц Х
Бесплатный конструктор сайтовuCoz
Понедельник, 07.07.2025, 03:03
Приветствую Вас Гость | RSS

Сайт учителя информатики  и ИКТ Шинкаренко Евгения Александровича

Реклама
Оцените сайт
Оцените мой сайт
Всего ответов: 837
Программирование
Какой язык программирования выбрать для подготовки к ЕГЭ
Всего ответов: 804

Решение задачи №6.

Задача №6.
На вход программы подается текст заклинания, состоящего не более чем из 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.


Алгоритм решения аналогичен алгоритму решения задачи №5.

Возврат к списку задач
Реклама
Календарь
«  Июль 2025  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Счетчик яндекс
Яндекс.Метрика