View difference between Paste ID: BY0hy9gc and WfvV1tpM
SHOW: | | - or go back to the newest paste.
1
program c4;
2
const N=200;
3
var s:string[200];
4
    i,l,k:integer;
5
        str:array[1..N] of integer ;
6
        buk:boolean ;
7
8
begin
9
readln(s);
10
for i:=1 to length(s) do
11
str[i]:=ord(s[i]);     {записываем в массив код каждого символа в строке}
12
i:=1;k:=0;              {обнуляю счестчик K,а счетчик i=1 т.к. строка с 0 символа не начинаеться}
13
while s[i]<>'#' do      {запуск цикла, выполнение пока не обнаружит символ #}
14
begin
15
if s[i] in ['a'..'z', 'A'..'Z'] then k:=k+1;   { проверка символа, являеться ли он буквой, если да, ув. счетчик на 1}
16
i:=i+1;                                        { счетчик номера символа +1}
17
buk:=s[i] in ['a'..'z', 'A'..'Z'];              { если символ, значение buk=true, если нет buk=false  }
18-
if buk=false then                               { проверка,являлся ли символ буквой, если не являлся,
18+
if buk=false then                               { проверка,являлся ли символ буквой, если не являлся,значит слово кончилось и начинаеться запуск кодирования слова}
19-
                                                    значит слово кончилось и начинаеться запуск кодирования слова}
19+
20
  for l:=i-1 downto i-k do                       {запуск цикла, для изменения каждой буквы слова}
21
  begin
22
  if s[l] in ['a'..'z'] then                     {проверка, являеться ли буква строчной, если да, проверка 1,если нет - проверка 2}
23-
  if s[l] in ['a'..'z'] then                       {проверка, являеться ли буква строчной, если да, проверка 1,
23+
  if str[l]+k<=ord('z') then str[l]:=str[l]+k else str[l]:=ord('a')+(str[l]+k-1-ord('z')) {проверка 1, если код символа после кодирования,больше чем код буквы "z",то к номеру символа "a"(97) прибавляем разницу между полученным кодом и кодом символа "z"(122). Пример:если код буквы 120, а длинна слова была 4, то получим 124, что больше кода буквы "z".97+(124-1-122)=9. Откуда -1?Т.к мы прибавляем к коду буквы "a", не считая ее саму }
24-
                                                    если нет - проверка 2}
24+
25-
  if str[l]+k<=ord('z') then str[l]:=str[l]+k else str[l]:=ord('a')+(str[l]+k-1-ord('z')) {проверка 1, если код символа после кодирования,
25+
26-
   больше чем код буквы "z",то к номеру символа "a"(97) прибавляем разницу между полученным кодом и кодом символа "z"(122).
26+
27-
   Пример:если код буквы 120, а длинна слова была 4, то получим 124, что больше кода буквы "z".97+(124-1-122)=98
27+
28-
   Откуда -1?Т.к мы прибавляем к коду буквы "a", не считая ее саму }
28+
29
end;
30
for i:=1 to length(s) do
31
write(chr(str[i]));;     {выводим результат, меняя код , на его символ}
32
end.