Подготовка к ЕГЭ. Информатика. Задача 06

Автор: | 12.03.2024

Задача 06

В этой задаче предлагается найти количество точек внутри фигуры без граничных точек. Может быть также определение максимальной ординаты или абсциссы точки внутри фигуры.

Наилучший вариант подсчета точек :

  1. Построение самой фигуры
  2. Подсчет числа нужных точек вручную

Если использовать вариант построения фигуры и подсчета точек программой, то результат  можно получить не всегда верный. Необходимо запрещать вывод точек на холсте.

         Вывод точек нужен для подсчета вручную и проверки.

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

         Всегда нужно контролировать правильность работы программы ручным пересчетом результата.

         В большинстве случаев для получения результата достаточно и КУМИРа в варианте изменяемого масштаба сетки.  Масштаб должен быть установлен в настройках как 1.

Основные алгоритмы проверок:

for x in range(-20,20):

    for y in range(-20,20):

        setpos(x*k,y*k)

        dot(5)

        #print(canvas.find_overlapping(x*k,y*k,x*k,y*k))

        if canvas.find_overlapping(x*k,y*k,x*k,y*k)==(5,):

            cnt+=1 или

for  y in range(-100*m,100*m,m):

    for x in range(-100*m,100*m,m):

        item=canvas.find_overlapping(x,y,x,y)

        if len(item)==1 and item[0]==5:

            cnt+=1        

Виды заданий:

  1. Определите, сколько точек с целыми положительными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом.  Точки на линии не учитывать.
  2. Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии не учитывать. Возможно нюансы алгоритма.
  3. Последние 6 заданий из 16 на Чертежника.  Используем вновь Черепашку в Питоне. 2 задания из 6 не рисуют замкнутой фигуры.
  4. Ниже примерный код программы подсчета числа точек фигуры
'''
Определите, сколько точек с целыми положительными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии не учитывать.
'''
from turtle import *
left(90)
color("blue","red")
tracer(0)
k=20
pendown()

begin_fill()
for i in range(6):
    forward(2*k)
    right(120)
    for j in range(2):
        right(330)
        forward(4*k)
end_fill()
cnt=0
penup()
canvas=getcanvas()

for x in range(-20,20):
    for y in range(-20,20):
        #setpos(x*k,y*k)
        #dot(5)
        #print(canvas.find_overlapping(x*k,y*k,x*k,y*k))
        if canvas.find_overlapping(x*k,y*k,x*k,y*k)==(5,):
            cnt+=1
print(cnt)    
done()

Ссылка на решенные задачи 06 из книги Евич и другие, содержащая 16 вариантов.