Вывести все общие символы двух строк с указанием для них числа общности - Pascal ABC

Формулировка задачи:

Даны две строки символов. Символ будем называть общим, если он встречается и в первой, и во второй строке. Пусть K1 - число вхождений в первую строку общего символа, а K2 - во вторую. Минимальное из чисел K1, K2 будем называть числом общности. Вывести все общие символы с указанием для них числа общности.

Код к задаче: «Вывести все общие символы двух строк с указанием для них числа общности - Pascal ABC»

textual
type mn=set of char;
var s1,s2:string;
    m_s1s2:mn;
    i:byte;
function v(x:string):mn;
var m:mn;i:byte;
begin
 m:=[];
 for i:=1 to length(x) do include(m,x[i]);
 v:=m
end;
function vh(xx:string;a:char;mm:mn):byte;
var i,k:byte;
begin
 k:=0;
 for i:=1 to length(xx) do if (xx[i]=a)and(a in mm) then inc(k);
 vh:=k
end;
begin
 write('1 строка символов: ');readln(s1);
 write('2 строка символов: ');readln(s2);
 m_s1s2:=v(s1)*v(s2);
 if m_s1s2<>[]
  then
   begin
    writeln('числа общности: ');
    for i:=32 to 255 do
     begin
      if chr(i) in m_s1s2
       then
        begin
         write(chr(i),': ');
         if vh(s1,chr(i),m_s1s2)<vh(s2,chr(i),m_s1s2)
          then writeln(vh(s1,chr(i),m_s1s2))
          else writeln(vh(s2,chr(i),m_s1s2))
        end  
     end
   end
  else writeln('общих символов нет') 
end.

6   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ