zadach321.PAS

{* Задача 321 *}

Unit ZADACH321;
Interface
Implementation
Begin
 writeln('Дана последовательность из 32 символов. В ней есть слова, которые отделяются друг от друга запятыми. Длина слов от 3 до 7 символов, считается, что длиннее 7 символов слов нет. Проанализировать слова введённой последовательности символов. Среди пар ai и bi, где ai – первая, а bi -последняя буквы i – слова последовательности определить наиболее часто встречающуюся пару. ');
End.

Program zadach321;

Uses zadach321.pas; {* Эту строку можно удалить *}
Uses crt; {* Подключаем внешние файлы *}
Var {* Необходимые переменные *}
  i     : integer;
  dl    : integer;
  j     : integer;
  l     : integer;
  max   : integer;
  lider : integer;
  sum   : integer;
  m     : integer;
  s     : integer;
  st    : String[32];
  n     : String[32];
  k     : String[32];
  A     : Array[1..34] Of String;
  B     : Array[1..34] Of String;
Begin
  clrscr; {* Очистка экрана *}
  writeln('Введите строку не большую 32 символов');
  read(st);
  A[1] := ', ';
  A[length(st) + 2] := ', ';
  For i := 2 To length(st) + 1 Do {* Увеличиваем i от 2 до length(st) с шагом 1 *}
    A[i] := st[i - 1];
  n := '00';
  For i := 1 To length(st) + 1 Do {* Цикл для i => [1 .. length(st)] *}
  Begin
    If (A[i] = ', 'And (A[i + 1]', 'And (n = '00'Then
      n := A[i + 1];
    If (n'00'And (A[i]', 'And (A[i + 1] = ', 'Then
    Begin
      j := j + 1;
      k := A[i];
      writeln(j, ' пара- ', n, '___', k);
      B[j] := n + k;
      n := '00';
    End;
    
  End;
  For i := 1 To j Do {* Переменная i увеличивается с 1 до j *}
  Begin
    For l := 1 To j Do {* Увеличиваем l от 1 до j с шагом 1 *}
      If B[i] = B[l] Then
        sum := sum + 1;
    If sum > max Then
    Begin
      lider := i;
      max := sum;
    End;
    sum := 0;
  End;
  write('Наиболее часто встречающиеся пары- ');
  If max = 1 Then
    write('все пары встречаются по одному разу')
  Else write(lider);
    For i := 1 To j Do {* Переменная i увеличивается с 1 до j *}
    Begin
      For l := 1 To j Do {* Переменная l увеличивается с 1 до j *}
        If B[i] = B[l] Then
          sum := sum + 1;
      If (sum = max) And (B[i]B[lider]) Then
      Begin
        s := 0;
        For m := 1 To i - 1 Do {* Цикл для m => [1 .. i] *}
          If B[m] = B[i] Then
            s := 1;
        If s = 0 Then
        Begin
          write(', ', i);
          lider := i;
        End;
        
      End;
      sum := 0;
    End;
  readln; {* Ждем нажатия Enter *}
  readln; {* Приостановка программы. Ожидание Enter *}
End.