Санкт–Петербургский Государственный
Электротехнический Университет
Кафедра МО ЭВМ
2 семестр
Задание № 26
Выполнил: Сорокина С. И.
ФРТ
Гр. 6122
Проверил: Варлинский Н. Н.
2007 г.
Содержательная постановка задачи
Задание №13 (составить программу на языке Паскаль)
N точек плоскости заданы своими координатами Х и Y. Сформировать массив координат точек, принадлежащих заштрихованной области.
Из сформированного массива точки с минимальными значениями X и Y.
Доп. задание: подсчитать количество операторов присваивания в составленной программе.
Входными параметрами являются значения количества точек (n), радиус главной окружности (Rad) и координаты точек (X и Y).
Ввод входных параметров организовать по выбору пользователя (клавиатура-файл).
Вывод результатов производить по выбору пользователя (клавиатура-файл).
В выходных данных должны быть представлены координаты и номера точек, входящих в заданную область, а также точки с минимальными значениями координат X и Y. В дополнительном задании подсчитывается количество операторов присваивания.
Пример: задано 6 точек (радиус главной окружности = 6):
№1 (3:;1)
№2 (1;3)
№3 (-3;2)
№4 (-4;-1)
№5 (-1;-1)
№6 (5;-2)
Выяснить принадлежность точек заданной области. Найти точки с наименьшими значениями координат X и Y.
Ответ:
Точка № 1 принадлежит данной области;
Точка № 3 принадлежит данной области;
Точка № 4 принадлежит данной области;
Точка № 6 принадлежит данной области.
Точка № 4 имеет минимальную координату X.
Точка № 6 имеет минимальную координату Y.
Дополнительное задание: - 21 число операторов присваивания
Формальная постановка задачи
Используется :
Формула окружности, с заданными координатами Х и У:
Rad*Rad = x*x + y*y
Формула окружности, со смещенной системой координат, с заданными координатами Х и Y:
Rad*Rad = (x-xo)*(x-xo) + (y-yo)*(y-yo)
Разработка Алгоритма
Часть 1:
В основе определения принадлежности точки плоскости лежит циклический процесс с заранее известным числом повторений – n (число точек). Необходимо определеть принадлежит ли выбранная точка Главной окружности и не лежит ли вне 2-х малых окружностей. Для этого необходимо и достаточно:
1 - Rad*Rad <= x*x + y*y ;
2 - Rad*Rad/4 >= (x-xo)*(x-xo) + (y-Rad/2)*(y-Rad/2);
3 - Rad*Rad/4 >= (x-xo)*(x-xo) + (y+Rad/2)*(y+Rad/2);
где Х и У , координаты соответствующей точки .
Процесс представляет собой планомерную проверку выполнения этих 3-х условий для n-числа точек. Результаты (координаты и номера подходящих точек записываем в новый массив), что будет использовано в следующем пункте.
Часть 2:
Процесс определения наименьшего Х и У, из точек входящих в заданную плоскость - это циклический процесс, с заранее заданным числом повторений – (i-1), i – кол-во точек входящих в поверхность. Для определения наименьшего используем метод Пузырика (последовательное сравнение точек).
Доп. Задание: для подсчета количества оператора присваивания (‘:=’) необходимо последовательно рассмотреть все строчки данной программы. Заменяем k-ую строчку переменной str и ищем в ней символ ‘ := ’, при нахождении включается счетчик (i := i+1). Удаляем найденное слово и рассматриваем эту строчку до тех пор, пока в ней не кончатся ‘:=’. Получившееся ‘i’ выписываем на экран или в файл (в зависимости от выбора метода вывода).
Конкретизация представленных данных
n |
число точек |
Целого типа |
Rad |
Главный радиус |
Вещественного типа |
x,y |
координаты точек |
Вещественного типа |
i |
число точек принадлежащих области |
Целого типа |
t,t1 |
перемен. определ. метод ввода , вывода |
Целого типа |
i1 |
счетчик операторов присваивания |
Целого типа |
f,r,g |
файловые перемен. с исх. данными и результатами |
Структурированный тип |
q |
Позиция оператора присваивания |
Целый тип |
str |
Считанная строка |
Символьный тип |
Макеты ВВОДА - ВЫВОДА
1. Введите число точек
2. < Значение n >
3. Введите радиус главной окружности
4. < Значение Rad >
5. Введите координаты точек
6. < Значение X > < Значение Y >
…
…
…
…
…
12. Ответ
13. В заданную поверхность входят точки #
…
…
…
17. Вывод точки с наим. X
18. Вывод точки с наим. Y
19.Доп. задание: … число операторов присваивания
Конец
Пример
В файле C:\in.log
6 (число точек)
6 (радиус главной окружности)
3 1
1 3
-3 2 (координаты точек)
-4 -1
-1 -1
5 -2
Результат в файле C:\out.rtf
В заданную поверхность входят точки #
# 1 : (3.00;1.00)
# 3 : (-3.00;2.00)
# 4 : (-4.00;-1.00)
# 6 : (5.00;-2.00)
naim. x :-4.00
naim. y :-2.00
21 – число повторений операторов присваивания
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.