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. |