Advertisement
Guest User

Untitled

a guest
May 26th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.02 KB | None | 0 0
  1. const
  2.   soglas: Set Of Char = ['б', 'в', 'г', 'ж', 'з', 'д', 'й', 'л', 'м', 'н', 'р', 'Б', 'В', 'Г', 'Ж', 'З', 'Д', 'Й', 'Л', 'М', 'Н', 'Р'];
  3.   glasn: Set Of Char = ['а', 'о', 'и', 'е', 'ё', 'э', 'ы', 'у', 'ю', 'я', 'А', 'О', 'И', 'Е', 'Ё', 'Э', 'Ы', 'У', 'Ю', 'Я'];
  4.  
  5. var
  6.   a: array[1..100] of string;
  7.   s, s1: string;
  8.   ch, ch1: char;
  9.   i, j, k, l, m, ans, ans1, ans2, g: integer;
  10.   ar: array[1..100] of integer;
  11.  
  12. begin
  13.   ans := 0;
  14.   k := 1;
  15.   l := 1;
  16.   read(s);
  17.   for i := 1 to length(s) do
  18.   begin
  19.     if (s[i] = ' ') and ((s[i - 1] <> '.') or (s[i - 1] <> '?') or (s[i - 1] <> '!')) then begin
  20.       a[l] := copy(s, k, i - k);
  21.       k := i + 1;
  22.       l := l + 1;
  23.     end;
  24.     if (s[i] = '.')  or (s[i] = '!') or (s[i] = '?') or (s[i] = ',') then begin
  25.       a[l] := copy(s, k, i - k);
  26.       l := l + 1;
  27.       a[l] := copy(s, i, 1);
  28.       l := l + 1;
  29.       k := i + 2;
  30.     end;
  31.   end;
  32.   if (s[length(s)] <> '.') or (s[length(s)] <> '!') or (s[length(s)] <> '?') then
  33.     a[l] := copy(s, k, length(s) - k + 1);
  34.   j := 1;
  35.   while j < l do
  36.   begin
  37.     if (a[j]='.') or (a[j]=',') or (a[j]='!')or (a[j]='?')or (a[j]=':')or (a[j]='') then begin
  38.       for k := j to l - 1 do
  39.         a[k] := a[k + 1];
  40.       l := l - 1;
  41.     end;
  42.     j := j + 1;
  43.   end;
  44.   for j := 1 to l do
  45.   begin
  46.     s := a[j];
  47.     s1 := '';
  48.     for i := length(s) downto 1 do
  49.       s1 := s1 + s[i];
  50.     if s1 = s then  ans := 1;
  51.   end;
  52. if ans = 1 then begin
  53.     for j := 1 to l do
  54.     begin
  55.       s := a[j];
  56.       g := 1;
  57.       while g <= length(s) do
  58.       begin
  59.         if s[g] in soglas then
  60.           ar[j] := ar[j] + 1;
  61.         g := g + 1;
  62.       end;
  63.     end;
  64.     for j := 1 to l do
  65.     begin
  66.       for k := 1 to l - j do
  67.       begin
  68.         if (ar[k] > ar[k + 1]) or ((ar[k] = ar[k + 1]) and (length(a[k]) >length(a[k])))  then begin
  69.           g := ar[k];
  70.           ar[k] := ar[k + 1];
  71.           ar[k + 1] := g;
  72.           s := a[k];
  73.           a[k] := a[k + 1];
  74.           a[k + 1] := s;
  75.         end;
  76.       end;
  77.     end;
  78.   end
  79.   else if ans = 0 then begin
  80.     for j := 1 to l do
  81.     begin
  82.       for k := 1 to l - j do
  83.       begin
  84.         s := a[k];
  85.         s1 := a[k + 1];
  86.         ans1 := 0;
  87.         for i := 1 to length(s) do
  88.         begin
  89.           if ans1 = 0 then begin
  90.             ch := s[i];
  91.             ch1 := s1[i];
  92.             if ord(ch) < 1072 then ch := chr(ord(ch) + 32);
  93.             if ord(ch1) < 1072 then ch1 := chr(ord(ch1) + 32);
  94.             if ord(ch) > ord(ch1) then begin
  95.             s := a[k];
  96.             a[k] := a[k + 1];
  97.             a[k + 1] := s;
  98.             ans1 := 1;
  99.             end;
  100.           end;
  101.         end;
  102.       end;
  103.     end;
  104.     for j := 1 to l do
  105.     begin
  106.       s := a[j];
  107.       g := 1;
  108.       while g <= length(s) do
  109.       begin
  110.         if s[g] in glasn then begin delete(s, g, 1); g := g - 1; end;
  111.         g := g + 1;
  112.       end;
  113.       a[j] := s;
  114.     end;
  115.  
  116.   end;
  117.   for j := 1 to l do
  118.     writeln(a[j], ' ');
  119. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement