zadach18.PAS

{* Задача 18 *}

Unit ZADACH18;
Interface
Implementation
Begin
 writeln('Дано 2 строки s1 и s2. Описать функцию, вычисляющую количество появлений заданного слова, заданной длины в заданной строке. Выяснить, что больше количество появлений слова ‘иванов’ в строке s1 или количество появлений слова ‘петров’ в строке s2. Описать логическую процедуру, проверяющую, можно ли путем перестановок символов в строке s1 получить строку s2. Считать, что обе строки одной длины.');
End.

Program p5_6;

Uses zadach18.pas; {* Эту строку можно удалить *}
Var {* Объявление переменных *}
  s1              : String;
  s2              : String;
  k1              : integer;
  k2              : integer;
  f               : boolean;
Function Str (s : String);
s1              : String);
Var {* Объявление переменных *}
  p                            : integer;
  k                            : integer;
  Begin
  k := 0;
  p := pos(s1, s);
While p > 0 Do
  Begin
k := k + 1;
p := pos(s1, s);
Str := k;
Procedure St (st1            : String;
st2                          : String;
Var {* Необходимые переменные *}
  fl : boolean);
Var {* В работе нам потребуются переменные: *}
  i : integer;
  k : integer;
  j : integer;
  Begin
  k := 0;
For i := 1 To length(st1) Do {* Переменная i увеличивается с 1 до length(st1) *}
  Begin
For j := 1 To length(st2) Do {* Переменная j увеличивается с 1 до length(st2) *}
  If st1[i] = st2[j] Then
    Begin
k := k + 1;
delete(st2, j, 1);
End;

End;
If k = length(st1) Then
  fl := true
Else fl := false;
  End;
Begin
writeln ('Введите строки');
readln (s1);
readln (s2);
k1 := Str(s1, 'иванов');
k2 := Str(s2, 'петров');
If k1 > k2 Then
  writeln ('Слов иванов в строке s1 больше');
If k2 > k1 Then
  writeln ('Слов петров в строке s2 больше');
If k1 = k2 Then
  writeln ('Одинаковое количество');
St(s1, s2, f);
If f = true Then
  writeln ('Можно')
Else writeln ('Нельзя');
  End..