Дан текст. Вывести в алфавитном порядке все буквы текста, входящие в него не менее двух раз. (Pascal)

Ответы

Ответ дал: BobbyFresnel
0

===== PascalABC.NET =====

begin

 var D := new Dictionary<char, integer>; // словарь

 var s := ReadlnString('Введите текст:')  // ввести строку текста

     .ToLower    // перекодировать буквы к нижнему регистру

     .Where(c -> c.IsLetter);   // отобрать только буквы

 foreach var c in s do   // повторить для каждого символа в строке

   if D.ContainsKey(c) then    // если символ уже встречался

     D[c] += 1        // увеличить его счетчик на 1

   else                                    // в противном случае

     D.Add(c, 1);   // добавить символ в словарь со счетчиком 1

 D.Where(p -> p.Value > 1) // отобрать элементы словаря со счетчиком > 1

     .Select(p -> p.Key)   // выбрать сами символы

     .OrderBy(p -> p)      // отсортировать по алфавиту

     .Println(' ')         // вывести через пробел в строку

end.

Приложения:

vladimirRM7: Большое спасибо )))
BobbyFresnel: Вот поэтому для программирования на современном диалектне Паскаля блок-схемы не нужны: все видно из текста программы.
BobbyFresnel: Пожалуйста
BobbyFresnel: Если нет желания со словарем работать, можно усложнить себе жизнь, введя два массива на 33+26=59 элементов и организовывать в одном хранение символов в алфавитном порядке, а во втором накапливать значения счетчиков встречаемости.
Вас заинтересует