Ребус: Реши + Если = Силен - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей. РЕШИ + ЕСЛИ __________ СИЛЕН

Решение задачи: «Ребус: Реши + Если = Силен»

textual
Листинг программы
var
  r, e, sh, i, s, l, o, n: integer;
  max, maxs, maxi, maxl, maxo, maxn: integer;
  m: set of byte;
 
begin
  m := [];
  for r := 1 to 9 do
    if not (r in m) then
    begin
      Include(m, r);
      for e := 1 to 9 do
        if not (e in m) then
        begin
          Include(m, e);
          for sh := 0 to 9 do
            if not (sh in m) then
            begin
              Include(m, sh);
              for i := 0 to 9 do
                if not (i in m) then
                begin
                  Include(m, i);
                  for s := 1 to 9 do
                    if not (s in m) then
                    begin
                      Include(m, s);
                      for l := 0 to 9 do
                        if not (l in m) then
                        begin
                          Include(m, l);
                          for o := 0 to 9 do
                            if not (o in m) then
                            begin
                              Include(m, o);
                              for n := 0 to 9 do
                                if not (n in m) then
                                begin
                                  Include(m, n);
                                  if r * 1000 + e * 100 + sh * 10 + i + e * 1000 + s * 100 + l * 10 + i = s * 10000 + i * 1000 + l * 100 + o * 10 + n then
                                  begin
                                    if s + i + l + o + n > max then
                                    begin
                                      max := s + i + l + o + n;
                                      maxs := s; maxi := i; maxl := l; maxo := o; maxn := n
                                    end;
                                    WriteLn(r, e, sh, i, ' + ', e, s, l, i, ' = ', s, i, l, o, n)
                                  end;
                                  Exclude(m, n)
                                end;
                              Exclude(m, o)
                            end;
                          Exclude(m, l)
                        end;
                      Exclude(m, s)
                    end;
                  Exclude(m, i)
                end;
              Exclude(m, sh)
            end;
          Exclude(m, e)
        end;
      Exclude(m, r)
    end;
  WriteLn('Значения цифр, при которых сумма цифр в результате наибольшая:');
  WriteLn('С = ', maxs, '; И = ', maxi, '; Л = ', maxl, '; Ё = ', maxo, '; Н = ', maxn);
  ReadLn
end.

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

  1. Переменные r, e, sh, i, s, l, o, n инициализируются значениями от 1 до 9.
  2. Переменные max, maxs, maxi, maxl, maxo, maxn инициализируются нулевыми значениями.
  3. Создается пустое множество m.
  4. В цикле от 1 до 9 выполняется следующая последовательность действий:
    • Если число r не содержится в множестве m, то оно включается в m.
    • В цикле от 1 до 9 выполняется следующая последовательность действий:
      • Если число e не содержится в множестве m, то оно включается в m.
      • В цикле от 0 до 9 выполняется следующая последовательность действий:
      • Если число sh не содержится в множестве m, то оно включается в m.
      • В цикле от 0 до 9 выполняется следующая последовательность действий:
        • Если число i не содержится в множестве m, то оно включается в m.
        • В цикле от 1 до 9 выполняется следующая последовательность действий:
        • Если число s не содержится в множестве m, то оно включается в m.
        • В цикле от 0 до 9 выполняется следующая последовательность действий:
          • Если число l не содержится в множестве m, то оно включается в m.
          • В цикле от 0 до 9 выполняется следующая последовательность действий:
          • Если число o не содержится в множестве m, то оно включается в m.
          • В цикле от 0 до 9 выполняется следующая последовательность действий:
            • Если число n не содержится в множестве m, то оно включается в m.
            • Проверяется условие: сумма чисел r, e, sh, i, s, l, o, n равна сумме чисел s, i, l, o, n.
            • Если условие выполняется, то значения переменных maxs, maxi, maxl, maxo, maxn обновляются.
            • Строка с числами r, e, sh, i, s, l, o, n выводится на экран.
            • Число n исключается из множества m.
            • Цикл по числам o завершается.
            • Число l исключается из множества m.
            • Цикл по числам s завершается.
            • Число i исключается из множества m.
            • Цикл по числам sh завершается.
            • Число e исключается из множества m.
            • Цикл по числам r завершается.
  5. Выводится сообщение Значения цифр, при которых сумма цифр в результате наибольшая: и значения переменных maxs, maxi, maxl, maxo, maxn.
  6. Программа ожидает ввода данных с помощью функции ReadLn.

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


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

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

11   голосов , оценка 4.545 из 5
Похожие ответы