Геомеьрическая задача |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Геомеьрическая задача |
Uriah |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
На плоскости заданы множество точек и прямая. Определить точку, ближайшую к прямой, из точек, лежащих выше прямой, и точку ближайшую к прямой, из точек, лежащих ниже.
Метод решения: Пусть прямая задана уравнением ax+by+c=0, где a,b,c – коэффициенты в уравнении, входные данные, вещественные числа. n – количество точек множества, входные данные, целое число. (xi,yi)│i=1..n ─ координаты множества точек, входные данные, вещественные числа. l ─ расстояния от заданной прямой до точек прямой, промежуточные данные, вещественные число Ввод a,b,c. Ввод n. Для i от 1 до n вводим координаты точек множества (xi,yi), где i изменяется на единицу (i = i+1). При (a*a+b*b)>0, находим расстояния от прямой до заданных точек: l = (a*xi+b*yi+c)/sqrt(a*a+b*b) Если (a*xi+b*yi+c)>0, то точка находится выше прямой, и тогда определяем какая точка находится ближе к прямой, путём сравнения расстояний от прямой до точек. Выводим координаты точки ближайшей к прямой из точек, лежащих выше неё. Если (a*xi+b*yi+c)<0, то точка находится ниже прямой, и тогда определяем какая точка находится ближе к прямой, путём сравнения расстояний от прямой до точек. Выводим координаты точки ближайшей к прямой из точек, лежащих ниже неё. Часть проги я написал: задал множество точек и нашёл расстояния от них до прямой, необходимо токо кусок чтобы определить точку, ближайшую к прямой, из точек, лежащих выше прямой, и точку ближайшую к прямой, из точек, лежащих ниже. ПОМОГИТЕ, ктонить, ПОЖАЛУЙСТА!!!!!!!!! заранее БЛАГОДАРЕН! |
Uriah |
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
я учусь в инсте на программиста(1 курс). первая лаба была на разработку методов решения задачи, и я использовал l[i], и за это препод снял почти половину балов
за нерациональное решение задачи |
Uriah |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
с переменной ничего не получается, а вот с массивом - всё класс!
|
Uriah |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
посмотрите пожалуйста прогу, она постоянно выбивает последнюю точку, не смотря на полученные расстояния. я делал прогу только для точек лежащих выше
Код program Mnogestvo; uses Crt; const n=5; var a,b,c:real; i:integer; X: array [1..n] of real; Y: array [1..n] of real; l: real; begin ClrScr; writeln ('Введите a,b,c'); readln (a,b,c); for i:=1 to n do begin writeln ('Введите координаты', ' ', i, '-й точки множества'); readln (X[i],Y[i]); end; for i:=1 to n do begin if (a*X[i]+b*Y[i]+c)>0 then l[i]:= a*X[i]+b*Y[i]+c; end; if l[i]>0 then begin for i:=1 to n do begin if (a*X[i+1]+b*Y[i+1]+c)<l[i] then l[i]:= a*X[i+1]+b*Y[i+1]+c; end; writeln (l[i]); writeln (i); writeln (X[i],Y[i]); end; readkey; end. |
Uriah |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
помогите плиз
|
Текстовая версия | 19.04.2024 10:08 |