Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно два раза. - 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 объединяются в одну строку.
- Проверяется, пустая ли получившаяся строка.
- Если строка пустая, выводится сообщение о том, что в исходной строке нет букв, встречающихся ровно два раза.
- Если строка не пустая, выводится сообщение с перечислением всех букв, встречающихся в ней ровно два раза.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д