Проанализируйте программный код задания (рис. 1). Проверьте вручную, задав переменным следующие значения: а=7, b=20,c=9 и a= 13,b=11,c=0. Запишите результат выполнения каждой из команд в программе при вводе этих значений. Анализируя полученные результаты, выясните, какой алгоритм программно решить данную задачу.


Проанализируйте программный код задания (рис. 1). Проверьте вручную, задав переменным следующие знач

Nicalat Nicalat    2   14.04.2022 02:23    1

Ответы
мурка92 мурка92  14.04.2022 06:00

1. Результаты выполнения каждой команды ниже.

2. Данную задачу решить линейный алгоритм (с ветвлениями if). Мы подставляли текущие значения переменных, тем самым определяли, выполнится командный блок if или нет. Если выполняется - также подставляли значения переменных, и находили новые значения. Мы выполняли код последовательно и были в роли программы, которая считывает написанный код и также выполняет эти же действия.

Объяснение:

Код с объяснениями:

a, b, c = map(int, input().split()) # вводятся значения a, b, c  с клавиатуры, через пробел

t = k = h = p = s = 0 # регистрируются переменные, равные нулю

if (a + b + c) % 3 == 0:  # если сумма a, b, c  кратна трём, то...

  k = (a + b + c) // 3  # ...присвоить переменной k значение: целая часть от деления (a + b + c) на 3

  t = a - k;  p = b - k;  h = c - k # ...выполнить данные действия

  if t > 0:  # если t больше нуля...

      s = s + t  #...то переменную s увеличить на t

  if p > 0:  # если p больше нуля...

      s = s + p # ...то переменную s увеличить на p

  if h > 0: # если h больше нуля...

      s = s + h  # ...то переменную s увеличить на h

  print(s)  # вывести значение переменной s

else:  # если сумма a, b, c  НЕ кратна трём, то...

  print(-1)  # ...вывести -1

Код с промежуточными результатами при a = 7, b = 20, c = 9:

a, b, c = 7, 20, 9

t = k = h = p = s = 0

if (a + b + c) % 3 == 0: # true. (7 + 20 + 9) % 3 = 36 % 3 = 0 (цел.часть 12)

  k = (a + b + c) // 3 # k = 36 // 3 = 12

  t = a - k;  p = b - k;  h = c - k  # t = 7 - 12 = -5;  p = 20 - 12 = 8;  h = 9 - 12 = -3

  if t > 0:  # false

      s = s + t

  if p > 0: # true. s = 0 + 8 = 8

      s = s + p

  if h > 0:  # false

      s = s + h

  print(s)  # вывод: 8

else:  # не выполнится

  print(-1)

Код с промежуточными результатами при a = 13, b = 11, c = 0:

a, b, c = 13, 11, 0

t = k = h = p = s = 0

if (a + b + c) % 3 == 0: # true. (13 + 11 + 0) % 3 = 24 % 3 = 0 (цел.часть 8)

  k = (a + b + c) // 3  # k = 24 // 3 = 8

  t = a - k;  p = b - k;  h = c - k # t = 13 - 8 = 5;  p = 11 - 8 = 3;  h = 0 - 8 = -8

  if t > 0: # true. s = 0 + 5 = 5

      s = s + t

  if p > 0:  # true. s = 5 + 3 = 8

      s = s + p

  if h > 0: # false

      s = s + h

  print(s) # вывод: 8

else:  # не выполнится

  print(-1)

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика