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 { проверка,являлся ли символ буквой, если не являлся,значит слово кончилось и начинаеться запуск кодирования слова}
| |
| 19 | begin | |
| 20 | - | for l:=i-1 downto i-k do {запуск цикла, для изменения каждой буквы слова}
|
| 20 | + | for l:=i-1 downto i-k do {запуск цикла, для изменения каждой буквы слова, -1 потому что проверка buk стоит уже после увеличения счетчика}
|
| 21 | begin | |
| 22 | if s[l] in ['a'..'z'] then {проверка, являеться ли буква строчной, если да, проверка 1,если нет - проверка 2}
| |
| 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 | ||
| 25 | else if str[l]+k<=ord('Z') then str[l]:=str[l]+k else str[l]:=ord('A')+(str[l]+k-1-ord('Z')); {Проверка 2, аналогично проверке 1, только для заглавных букв}
| |
| 26 | end; | |
| 27 | k:=0; {После завершения кодирования словв, обнуляем счетчик длинны слова}
| |
| 28 | end; | |
| 29 | end; | |
| 30 | for i:=1 to length(s) do | |
| 31 | write(chr(str[i]));; {выводим результат, меняя код , на его символ}
| |
| 32 | end. |