20.06.2022

Язык Паскаль. Лера составляет 5-буквенные слова из букв ЛОГАРИФМ

 Задача. Лера составляет 5-буквенные слова из букв Л, О, Г, А, Р, И, Ф, М, причём никакие две гласные или две согласные не должны стоять рядом. Буквы в слове не должны повторяться. Сколько слов может составить Лера?

Так как буквы в слове не должны повторяться, значит получать слова будем перестановками букв. Ранее мы решали задачи на перестановки, например, про Магистра.

Как будем решать задачу

Заведем три символьных массива: массив гласных букв bg, массив согласных букв bs и массив всех букв c (его мы получим суммой гласных и согласных букв).

Получим 5-буквенное слово s перестановками букв массива c.

foreach x in c.Permutations(5) do 

   s := x.JoinToString; 

Заведем переменную f (флаг, тип boolean) и сохраним в ней значение true (истина) - это будет означать, что никаких рядом стоящих двух согласных или двух гласных букв в слове нет. Получим все перестановки из двух гласных букв (переменная y). Если сочетание двух гласных букв в слове s есть, присвоим флагу значение false (ложь). Так же поступим с согласными буквами. Если переменная f в итоге хранит значение true, значит слово s получено верно, счетчик искомых слов t увеличим на 1:  if f then t+=1;

Программа решения задачи на языке Паскаль

var

  c, x, y, bg, bs: array of char;

  s,d: string; t: integer; f:boolean;

begin

  c:= new char[8]; bg:= new char[3]; bs:= new char[5]; 

  bg[0]:='О'; bg[1]:='А'; bg[2]:='И';

  bs[0]:= 'Л'; bs[1]:= 'Г'; bs[2]:= 'Р'; bs[3]:= 'Ф'; bs[4]:= 'М';

  c:=bg+bs; //все буквы

  t := 0; 

  foreach x in c.Permutations(5) do 

    begin 

      s := x.JoinToString; 

      f:=true; //нет двух гласных или двух согласных рядом

      foreach y in bg.Permutations(2) do

      begin

        d:=y.JoinToString; 

        if d in s then f:=false;

      end;

     foreach y in bs.Permutations(2) do

      begin

        d:=y.JoinToString; 

        if d in s then f:=false;

      end;

      if f then t+=1;

    end;

  println('Количество слов, которые составит Лера: ',t); 

end.

Ответ: 480

Результат выполнения программы

Результат запуска

Другие задачи на перестановки

Сколько существует шестнадцатеричных трехзначных чисел, в которых все цифры различны и никакие две четные или две нечетные цифры не стоят рядом

Читать

Настя составляет коды из букв слова НАСТЯ. Код должен состоять из 7 букв, буква Н должна встречаться в нём ровно два раза, буква А – как минимум один раз. Сколько различных кодов может составить Настя

Читать

Алексей составляет 5-буквенные слова из букв М, А, Г, И, С, Т, Р. Каждую букву можно использовать не более одного раза, при этом в слове нельзя использовать более одной гласной. Сколько различных кодов может составить Алексей

Читать

Комментариев нет:

Отправить комментарий