В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Kotik20052005
Kotik20052005
20.03.2021 22:03 •  Информатика

Реализовать любом языке из списка: си/c++/c#/pascal/basic/javascript/fasm. задано для развлечения =))

дан список слов, и одно слово.

список слов можно задать в любом виде: прочитать из файла (тогда нужно указать формат файла, или приложить его пример), ввести с клавиатуры, задать константой, и т.д.

слово должно вводиться с клавиатуры.

проверить, присутствуют ли в списке слова, состоящие из тех же букв (или их части), из которых состоит слово. порядок букв не имеет значения. в искомых словах может быть меньше букв, чем в исходном. как по количеству, так и по разнообразию. то есть, нельзя искать слова с тремя буквами "е", если в слове их только две, но можно с двумя и с одной.

пример:

список слов: рыба, рак, щука, лебедь, карась, пескарь, баня, бубен, столб, баян, барыня.

слово: рабыня

вывод программы: рыба, баня, баян, барыня

Показать ответ
Ответ:
zhekabigboss
zhekabigboss
11.10.2020 01:50

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

begin

 var СписокСлов := ReadlnString('Список слов через пробел:').ToWords;

 var ИсходныйСловарь := new Dictionary<char, integer>;

 var РабочийСловарь := new Dictionary<char, integer>;

 foreach var Символ in ReadlnString('Слово:') do

   ИсходныйСловарь[Символ] := ИсходныйСловарь.Get(Символ) + 1;

 var СтрокаВывода: string;

 foreach var Слово in СписокСлов do

 begin  

   foreach var Символ in Слово do

     РабочийСловарь[Символ] := РабочийСловарь.Get(Символ) + 1;

   var МожноПостроитьСлово := True;

   foreach var ЭлементРабочегоСловаря in РабочийСловарь do

   begin

     var Ключ := ЭлементРабочегоСловаря.Key;

     var ПределПовторовБуквы: integer;

     if ИсходныйСловарь.TryGetValue(Ключ, ПределПовторовБуквы) then

     begin  

       if ЭлементРабочегоСловаря.Value > ПределПовторовБуквы then

       begin

         МожноПостроитьСлово := False;

         break

       end

     end

     else

     begin

       МожноПостроитьСлово := False;

       break

     end  

   end;  

   if МожноПостроитьСлово then

   begin

     if СтрокаВывода <> '' then

       СтрокаВывода += ', ';

     СтрокаВывода += Слово

   end;  

   РабочийСловарь.Clear;

 end;

 Println(СтрокаВывода)

end.


Реализовать любом языке из списка: си/c++/c#/pascal/basic/javascript/fasm. задано для развлечения =)
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота