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

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

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

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

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

textual
Листинг программы
  1. var
  2.   r, e, sh, i, s, l, o, n: integer;
  3.   max, maxs, maxi, maxl, maxo, maxn: integer;
  4.   m: set of byte;
  5.  
  6. begin
  7.   m := [];
  8.   for r := 1 to 9 do
  9.     if not (r in m) then
  10.     begin
  11.       Include(m, r);
  12.       for e := 1 to 9 do
  13.         if not (e in m) then
  14.         begin
  15.           Include(m, e);
  16.           for sh := 0 to 9 do
  17.             if not (sh in m) then
  18.             begin
  19.               Include(m, sh);
  20.               for i := 0 to 9 do
  21.                 if not (i in m) then
  22.                 begin
  23.                   Include(m, i);
  24.                   for s := 1 to 9 do
  25.                     if not (s in m) then
  26.                     begin
  27.                       Include(m, s);
  28.                       for l := 0 to 9 do
  29.                         if not (l in m) then
  30.                         begin
  31.                           Include(m, l);
  32.                           for o := 0 to 9 do
  33.                             if not (o in m) then
  34.                             begin
  35.                               Include(m, o);
  36.                               for n := 0 to 9 do
  37.                                 if not (n in m) then
  38.                                 begin
  39.                                   Include(m, n);
  40.                                   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
  41.                                   begin
  42.                                     if s + i + l + o + n > max then
  43.                                     begin
  44.                                       max := s + i + l + o + n;
  45.                                       maxs := s; maxi := i; maxl := l; maxo := o; maxn := n
  46.                                     end;
  47.                                     WriteLn(r, e, sh, i, ' + ', e, s, l, i, ' = ', s, i, l, o, n)
  48.                                   end;
  49.                                   Exclude(m, n)
  50.                                 end;
  51.                               Exclude(m, o)
  52.                             end;
  53.                           Exclude(m, l)
  54.                         end;
  55.                       Exclude(m, s)
  56.                     end;
  57.                   Exclude(m, i)
  58.                 end;
  59.               Exclude(m, sh)
  60.             end;
  61.           Exclude(m, e)
  62.         end;
  63.       Exclude(m, r)
  64.     end;
  65.   WriteLn('Значения цифр, при которых сумма цифр в результате наибольшая:');
  66.   WriteLn('С = ', maxs, '; И = ', maxi, '; Л = ', maxl, '; Ё = ', maxo, '; Н = ', maxn);
  67.   ReadLn
  68. 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

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

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

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