Вот алгоритм, описанный на псевдокоде.
Объясните пожалуйста как это делается, я хочу именно понять а не ответ узнать
1) Что будет выведено при M=6, N=10?
2) Найдите наименьшее значение M, при вводе которого при N=50 будет выведено число
200. Ответ обоснуйте
Ответы
Ответ:
1) 30
2) 8
Объяснение:
1)
Идём по коду и прописываем все операции, которые он совершает (вместо переменных подставляем их значения).
M = 6; N = 10
S = 6; T = 10
нц пока S ≠ T: (6 ≠ 10. Соответствует условию? Да)
если S > T: (6 > 10. Соответствует условию? Нет)
иначе:
S = 6 + 6 = 12
нц пока S ≠ T: (12 ≠ 10. Соответствует условию? Да)
если S > T: (12 > 10. Соответствует условию? Да)
T = 10 + 10 = 20
нц пока S ≠ T: (12 ≠ 20. Соответствует условию? Да)
если S > T: (12 > 20. Соответствует условию? Нет)
иначе:
S = 12 + 6 = 18
нц пока S ≠ T: (18 ≠ 20. Соответствует условию? Да)
если S > T: (18 > 20. Соответствует условию? Нет)
иначе:
S = 18 + 6 = 24
нц пока S ≠ T: (24 ≠ 20. Соответствует условию? Да)
если S > T: (24 > 20. Соответствует условию? Да)
T = 20 + 10 = 30
нц пока S ≠ T: (24 ≠ 30. Соответствует условию? Да)
если S > T: (24 > 30. Соответствует условию? Нет)
иначе:
S = 24 + 6 = 30
нц пока S ≠ T: (30 ≠ 30. Соответствует условию? Нет)
кц
вывод 30
2)
Для решения этой задачи я написал программу на языке кумир:
алг
нач
цел S, T, M, N
нц для M от 1 до 50
S := M
T := 50
N := 50
нц пока S <> T и T <= 200
если S > T то
T := T + N
иначе
S := S + M
все
кц
если T = 200 то
вывод M, ' '
все
кц
кон
Этот алгоритм выводит то значение M(или S), при котором T в результате алгоритма будет равен 200. Алгоритм выводит 8 и 40. Т.к. нам нужно наименьшее значение, то ответ на задачу является 8.