Guest User

Untitled

a guest
May 11th, 2012
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.80 KB | None | 0 0
  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.                                                     значит слово кончилось и начинаеться запуск кодирования слова}
  20.  begin
  21.   for l:=i-1 downto i-k do                       {запуск цикла, для изменения каждой буквы слова}
  22.   begin
  23.   if s[l] in ['a'..'z'] then                       {проверка, являеться ли буква строчной, если да, проверка 1,
  24.                                                     если нет - проверка 2}
  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, если код символа после кодирования,
  26.    больше чем код буквы "z",то к номеру символа "a"(97) прибавляем разницу между полученным кодом и кодом символа "z"(122).
  27.    Пример:если код буквы 120, а длинна слова была 4, то получим 124, что больше кода буквы "z".97+(124-1-122)=98
  28.    Откуда -1?Т.к мы прибавляем к коду буквы "a", не считая ее саму }
  29.  
  30.   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, только для заглавных букв}
  31.   end;
  32.   k:=0;     {После завершения кодирования словв, обнуляем счетчик длинны слова}
  33. end;
  34. end;
  35. for i:=1 to length(s) do
  36. write(chr(str[i]));;     {выводим результат, меняя код , на его символ}
  37. end.
Advertisement
Add Comment
Please, Sign In to add comment