Форум » Логические выражения » Задание 15 (разные ответы в зависимости от способа решения задачи) » Ответить

Задание 15 (разные ответы в зависимости от способа решения задачи)

Amo:

Ответов - 9

Amo: Решаю следующую задачу. Для какого набольшего целого неотрицательного числа А выражение (34 <> 2y + 3x) \/ (A < x) \/ (A < y) тождественно истинно (то есть принимает значение 1 при любых неотрицательных значениях переменных х и y). Способ первый (графический). Строю график функции 34 = 2y + 3x, отмечаю на плоскости области (A < x) и (A < y), например, при A = 5. Потом начинаю области (A < x) и (A < y) "двигать" по плоскости и понимаю, Amax = 6. Способ 2 (программный). Для решения задачи написала программу на Python: [pre2] A_max = 0 for A in range(1, 100): print(A) flag = True for x in range(1, 100): for y in range(1, 100): if not((34 != 2*y + 3*x) or (A < x) or (A < y)): print('x =', x, 'y =', y) flag = False break if flag == False: break if flag == True: A_max = A print('A_max =', A_max)[/pre2] Программа выдаёт ответ 7 (он неправильный), почему понять не могу, точнее не понимаю, как исправить программу, чтобы она выдавала правильный ответ, помогите, пожалуйста. Ведь программный способ применяется для решения таких задач.

Поляков: Правильный ответ - 7, его и показывает программа. Дело в следующем. На графике вы работаете с аналоговой информацией. Программа (в соответствии с заданием!) рассматривает только дискретные данные при целых значениях x и y. Да, по графику вы видите, что точка (7, 7) находится выше прямой, но при этом ни одна точка с ЦЕЛОЧИСЛЕННЫМИ координатами, лежащая на прямой, не попадет внутрь квадрата с углами (0,0)-(7,7). Проблема в том, что прямые 34 = 2x+3y и x=y НЕ пересекаются в точке с целочисленными координатами. Если вместо 34 взять, например, 35, все будет хорошо (Amax = 6). И еще: по условию координаты неотрицательные, то есть 0 тоже нужно включать в перебор:[pre2]for x in range(0, 100): for y in range(0, 100):[/pre2] Хотя в данном случае это не влияет на решение.

Amo: Дело в том, что в учебнике дан ответ именно 6, причём это явно не опечатка, потому что по этой же логике даны ответы и к остальным задачам (учебник Евич-2020. Информатика и ИКТ. 20 тренировочных вариантов, Вариант 1 (он мною приведён), дальше такая же беда с программной реализацией с Вариантом, например, 2).


Поляков: Amo пишет: Дело в том, что в учебнике дан ответ именно 6 Думаю, что это неверно. В принципе, можно написать Людмиле Николаевне. Она даже когда-то появлялась на этом форуме.

Amo: A ещё эту задачу можно решать так: Составим систему уравнений: Найдём точку пересечения графика y = 17 – 1.5x и точки с координатами (А, A). Получим A = 17 – 1.5A => A = 6.8 При этом значении A точка (6,8; 6,8) является единственной не закрашенной точкой плоскости, поэтому A нужно взять меньше, чтобы оно лежало ниже графика функции y = 17 – 1.5x, разве не так? И тогда А = 6.

Поляков: Amo пишет: разве не так Не так. Я выше попытался объяснить, почему. Переход от непрерывного к дискретному приводит к новым качественным особенностям.

Amo: Поляков пишет: Не так. Я выше попытался объяснить, почему. Переход от непрерывного к дискретному приводит к новым качественным особенностям. Но ведь в условии не написано, что координаты x и y должны быть обязательно целыми..., написано, что любые неотрицательные. Извините за кучу вопросов, просто хочется досконально понять задачу....

Поляков: Amo пишет: Но ведь в условии не написано, что координаты x и y должны быть обязательно целыми..., написано, что любые неотрицательные. Извините за кучу вопросов, просто хочется досконально понять задачу.. Да, если вы точно процитировали условие, то согласен с вашим графическим решением и с ответом Л.Н. Евич. А программа перебирает только целые. Потому и расхождение.

Amo: Спасибо. Общими усилиями дошли до истины.



полная версия страницы