Форум » Циклы и ветвления » Задание 6. Крылов-2023, вариант 3 » Ответить

Задание 6. Крылов-2023, вариант 3

Amo: Добрый день, решила Задание 6, вариант 3 по учебнику Крылова-2023. Черепахе был дан для исполнения следующий алгоритм: Вперед 100 Налево 90 Вперёд 100 Направо 30 Опусти Повтори 10 [Вперёд 30 Направо 90 Вперёд 40 Направо 90]. Определите, сколько точек с целочисленными координатами будет находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует. Ответ не сходится (у меня ровно на одну точку идёт расхождение с правильным ответом: у меня 1199, правильный ответ 1200), ошибку не вижу. Помогите, пожалуйста. [pre2] from math import * count = 0 tan_60 = tan(radians(60)) tan_150 = tan(radians(150)) cos_60 = cos(radians(60)) cos_30 = cos(radians(30)) for x in range(1, 100): for y in range(-100, 100): if (y < tan_60 * x) and (y > tan_60 * x - 30 / cos_60) and (y > tan_150 * x) and (y < tan_150 * x + 40 / cos_30): count += 1 print(count) [/pre2]

Ответов - 1

Amo: Я уже поняла, что тут ошибка округления, потому что если уменьшить получившийся прямоугольник, то есть рисовать прямоугольник не 30 x 40, а 15 x 20 (по площади 1/4 от исходного) и посчитать количество точек нём, то получается правильно - 300 точек. И тогда правильный ответ можно найти и для исходной задачи, но что делать с неправильным округлением, если решать исходную задачу? Пробовала работать с типом Decimal, проблему это не решило. Всё те же 1199 точек.



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