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

Узнай цену своей работы

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

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

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

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.

Объяснение кода листинга программы

  1. Создается тип mn, который представляет собой множество символов.
  2. Создаются две переменные s1 и s2 типа string, которые представляют собой две строки для сравнения.
  3. Создается переменная m_s1s2 типа mn, которая будет содержать общие символы двух строк.
  4. Создается переменная i типа byte, которая будет использоваться в цикле.
  5. Определяется функция v, которая принимает строку x и возвращает множество символов, которые присутствуют в x.
  6. Определяется функция vh, которая принимает строку xx, символ a и множество mn mm. Она возвращает количество общих символов между xx и mm, учитывая символ a.
  7. Выводится первая строка символов s1.
  8. Выводится вторая строка символов s2.
  9. Вычисляется значение m_s1s2, которое представляет собой количество общих символов между s1 и s2.
  10. Проверяется, не равно ли m_s1s2 пустому множеству. Если это так, то выводится сообщение о том, что общих символов нет.
  11. Если m_s1s2 не является пустым множеством, то выводится количество общих символов для каждого символа от 32 до 255.
  12. Для каждого символа от 32 до 255 проверяется, присутствует ли он в m_s1s2.
  13. Если символ присутствует в m_s1s2, то выводится его значение и количество общих символов для этого символа.
  14. Если символ отсутствует в m_s1s2, то выводится количество общих символов для этого символа из s2.
  15. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы