12.07.2015 Views

Выпуск 14

Выпуск 14

Выпуск 14

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

В МИР ИНФОРМАТИКИ № 16858сентябрь 2011 / ИНФОРМАТИКАОчевидное решение — перебрать все возможныеквадратики и проверить, располагается ли каждыйиз них внутри окружности. Соответствующая схемапрограммы:цикл для каждого квадратикаесли квадратик внутри окружноститоУвеличить счетчик числа квадратов на 1всеконец циклаВ дальнейших рассуждениях и в программе будемиспользовать следующие основные величины:— R — радиус окружности;— Хлн, Хпн, Хлв, Хпв — координаты по оси х,соответственно, левой нижней, правой нижней,левой верхней и правой верхней вершинквадрата;— Улн, Упн, Улв, Упв — то же по оси у;— n — искомое количество квадратов.Перебор, о котором шла речь чуть выше, можнопровести, рассмотрев, например, все возможныезначения величины Хлн, а для каждого из них —все возможные значения величины Улн:нц для всех возможных значений Хлннц для всех возможных значений УлнОпределить координаты трех остальныхвершин квадратикаесли квадратик внутри окружноститоУвеличить счетчик числа квадратов на 1всекцкцКоординаты х и у трех остальных вершин некоторогоквадратика в зависимости от Хлн и Улн найтипросто:Хпн = Хлн + 1Хлв = ХлнХпв = Хлн + 1Упн = УлнУлв = Улн + 1Упв = Улн + 1А как проверить тот факт, что квадратик полностьюнаходится внутри окружности? Ответ такой— это имеет место, если при заданных значенияхабсцисс вершин одновременно справедливыдва условия (см. рис. 2):1) координаты по оси у верхней левой и верхнейправой вершин квадрата не больше, чем соответствующеезначение ординаты соответствующейточки верхней половины окружности;2) координаты по оси у нижней левой и нижнейправой вершин квадрата не меньше, чем соответствующеезначение ординаты соответствующейточки нижней половины окружности:если Улв = Унпотоn := n + 1всегде Увпо — ордината соответствующей точки верхнейполовины окружности, Унпо — нижней половины.Рис. 2Зависимость ординаты у некоторой точки окружностиот ее абсциссы х можно получить, зная уравнениеокружности (x 2 + y 2 = R 2 ):y R xпричем для верхней половины окружности следуетвзять положительное значение корня, а длянижней — отрицательное. Учитывая это, можемзаписать условие размещения квадратика внутриокружности:Улв ≤ sqrt(R * R – Хлв * Хлв) и Упв ≤ sqrt(R * R –– Хпв * Хпв) и Улн ≥ sqrt(R * R – Хлн * Хлн) и Упн ≥≥ sqrt(R * R – Хпн * Хпн), где sqrt — функция, возвращающаяквадратный корень из своего аргумента.Видно, что для каждой половины окружностипроверка проводится дважды (для левой и правойточек). Поэтому целесообразно разработать функцию,определяющую значение ординаты для тойили иной половины окружности в зависимости отзаданного значения абсциссы х. Для верхней половинытакая функция имеет вид:алг вещ Увпо(арг цел х)начзнач := sqrt(R * R – х * х)кон— для нижней:алг вещ Унпо(арг цел х)начзнач := -sqrt(R * R – х * х)конС использованием этих функций основнаяпрограмма может быть оформлена следующимобразом:цел RR := …алг Вариант 1нач цел Хлн, Хпн, Хлв, Хпв, Улн, Упн, Улв,Упв, nn := 0нц для Хлн от -R до R – 1 |См. рис. 1нц для Улн от -R до R - 1Хпн := Хлн + 1Хлв := ХлнХпв := Хлн + 1Упн := Улн2 2 ,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!