Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно два раза. - 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
Листинг программы
  1. var s: string;
  2.     i: byte;
  3.     c: char;
  4.     x1, x2: set of char;
  5.  
  6. begin
  7.   x1:=[];
  8.   x2:=[];
  9.   writeln('Enter string:');
  10.   readln(s);
  11.   for i := 1 to length(s) do
  12.     if s[i] in ['a'..'z']
  13.       then if not ((s[i] in x1) or (s[i] in x2))
  14.         then include(x1, s[i])
  15.         else if (s[i] in x1) and not (s[i] in x2)
  16.           then include(x2, s[i])
  17.           else if (s[i] in x1) and (s[i] in x2)
  18.             then exclude(x1, s[i]);
  19.   x1 := x1 * x2;
  20.   if x1 = []
  21.     then write('In string there are no letters which are found exactly two times.')
  22.     else begin
  23.       writeln('Letters, meeting in string exactly two times:');
  24.       for c:='a' to 'z' do if c in x1 then write(c,' ')
  25.     end;
  26.   readln
  27. end.

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

  1. Создаются две пустые переменные типа set of char - x1 и x2.
  2. Выводится сообщение для ввода строки.
  3. Считывается строка от пользователя.
  4. В цикле for перебираются все символы входной строки.
  5. Проверяется, является ли текущий символ маленькой латинской буквой.
  6. Если символ является маленькой латинской буквой и еще не был учтен ни в x1, ни в x2, то он добавляется в x1.
  7. Если символ является маленькой латинской буквой и уже был учтен в x1, но не в x2, то он добавляется в x2.
  8. Если символ является маленькой латинской буквой и был учтен и в x1, и в x2, то он исключается из x1.
  9. После завершения цикла, x1 и x2 объединяются в одну строку.
  10. Проверяется, пустая ли получившаяся строка.
  11. Если строка пустая, выводится сообщение о том, что в исходной строке нет букв, встречающихся ровно два раза.
  12. Если строка не пустая, выводится сообщение с перечислением всех букв, встречающихся в ней ровно два раза.

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


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

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

13   голосов , оценка 4.462 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы