Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно два раза. - Turbo Pascal
Формулировка задачи:
Помогите плиз!оочень нужно((((
Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно два раза.
Указание: решение задачи простое, если вы будете использо-вать множества.
Заведите три множества X1, X2 и X3 (сначала эти множества пустые). И в цикле просмотрите все символы из введенной строки. С каждым символом – маленькой латинской буквой выполняйте следующие действия:
1. Если этого символа нет в X1, то поместите его туда (после окончания цикла множество X1 содержит все символы из строки).
2. Если этот символ есть в X1 и нет в X2, то поместите этот символ в X2 (после окончания цикла множество X2 содержит все символы из строки, которые там встречаются более одного раза).
3. Если этот символ есть в X1 и в X2, то поместите этот символ в X3 (после окончания цикла множество X3 со-держит все символы из строки, которые там встреча-ются более двух раз).
После окончания цикла распечатайте в алфавитном порядке все элементы из разности множеств X2–X3.
Это будет ответ.
(Используйте цикл
for c:=’a’ to ‘z’ do
если c входит в X2–X3, то печать c. )
Решение задачи: «Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно два раза.»
textual
Листинг программы
var s: string; i: byte; c: char; x1, x2: set of char; begin x1:=[]; x2:=[]; writeln('Enter string:'); readln(s); for i := 1 to length(s) do if s[i] in ['a'..'z'] then if not ((s[i] in x1) or (s[i] in x2)) then include(x1, s[i]) else if (s[i] in x1) and not (s[i] in x2) then include(x2, s[i]) else if (s[i] in x1) and (s[i] in x2) then exclude(x1, s[i]); x1 := x1 * x2; if x1 = [] then write('In string there are no letters which are found exactly two times.') else begin writeln('Letters, meeting in string exactly two times:'); for c:='a' to 'z' do if c in x1 then write(c,' ') end; readln end.
Объяснение кода листинга программы
- Создаются две пустые переменные типа set of char - x1 и x2.
- Выводится сообщение для ввода строки.
- Считывается строка от пользователя.
- В цикле for перебираются все символы входной строки.
- Проверяется, является ли текущий символ маленькой латинской буквой.
- Если символ является маленькой латинской буквой и еще не был учтен ни в x1, ни в x2, то он добавляется в x1.
- Если символ является маленькой латинской буквой и уже был учтен в x1, но не в x2, то он добавляется в x2.
- Если символ является маленькой латинской буквой и был учтен и в x1, и в x2, то он исключается из x1.
- После завершения цикла, x1 и x2 объединяются в одну строку.
- Проверяется, пустая ли получившаяся строка.
- Если строка пустая, выводится сообщение о том, что в исходной строке нет букв, встречающихся ровно два раза.
- Если строка не пустая, выводится сообщение с перечислением всех букв, встречающихся в ней ровно два раза.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д