Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program c4;
- const N=200;
- var s:string[200];
- i,l,k:integer;
- str:array[1..N] of integer ;
- buk:boolean ;
- begin
- readln(s);
- for i:=1 to length(s) do
- str[i]:=ord(s[i]); {записываем в массив код каждого символа в строке}
- i:=1;k:=0; {обнуляю счестчик K,а счетчик i=1 т.к. строка с 0 символа не начинаеться}
- while s[i]<>'#' do {запуск цикла, выполнение пока не обнаружит символ #}
- begin
- if s[i] in ['a'..'z', 'A'..'Z'] then k:=k+1; { проверка символа, являеться ли он буквой, если да, ув. счетчик на 1}
- i:=i+1; { счетчик номера символа +1}
- buk:=s[i] in ['a'..'z', 'A'..'Z']; { если символ, значение buk=true, если нет buk=false }
- if buk=false then { проверка,являлся ли символ буквой, если не являлся,
- значит слово кончилось и начинаеться запуск кодирования слова}
- begin
- for l:=i-1 downto i-k do {запуск цикла, для изменения каждой буквы слова}
- begin
- if s[l] in ['a'..'z'] then {проверка, являеться ли буква строчной, если да, проверка 1,
- если нет - проверка 2}
- 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)=98
- Откуда -1?Т.к мы прибавляем к коду буквы "a", не считая ее саму }
- 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, только для заглавных букв}
- end;
- k:=0; {После завершения кодирования словв, обнуляем счетчик длинны слова}
- end;
- end;
- for i:=1 to length(s) do
- write(chr(str[i]));; {выводим результат, меняя код , на его символ}
- end.
Advertisement
Add Comment
Please, Sign In to add comment