Вывести все общие символы двух строк с указанием для них числа общности - 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.
Объяснение кода листинга программы
- Создается тип mn, который представляет собой множество символов.
- Создаются две переменные s1 и s2 типа string, которые представляют собой две строки для сравнения.
- Создается переменная m_s1s2 типа mn, которая будет содержать общие символы двух строк.
- Создается переменная i типа byte, которая будет использоваться в цикле.
- Определяется функция v, которая принимает строку x и возвращает множество символов, которые присутствуют в x.
- Определяется функция vh, которая принимает строку xx, символ a и множество mn mm. Она возвращает количество общих символов между xx и mm, учитывая символ a.
- Выводится первая строка символов s1.
- Выводится вторая строка символов s2.
- Вычисляется значение m_s1s2, которое представляет собой количество общих символов между s1 и s2.
- Проверяется, не равно ли m_s1s2 пустому множеству. Если это так, то выводится сообщение о том, что общих символов нет.
- Если m_s1s2 не является пустым множеством, то выводится количество общих символов для каждого символа от 32 до 255.
- Для каждого символа от 32 до 255 проверяется, присутствует ли он в m_s1s2.
- Если символ присутствует в m_s1s2, то выводится его значение и количество общих символов для этого символа.
- Если символ отсутствует в m_s1s2, то выводится количество общих символов для этого символа из s2.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д