![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Uriah |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: ![]() ![]() ![]() |
На плоскости заданы множество точек и прямая. Определить точку, ближайшую к прямой, из точек, лежащих выше прямой, и точку ближайшую к прямой, из точек, лежащих ниже.
Метод решения: Пусть прямая задана уравнением 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 Пол: Мужской Репутация: ![]() ![]() ![]() |
я учусь в инсте на программиста(1 курс). первая лаба была на разработку методов решения задачи, и я использовал l[i], и за это препод снял почти половину балов
за нерациональное решение задачи |
Uriah |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: ![]() ![]() ![]() |
с переменной ничего не получается, а вот с массивом - всё класс!
|
Uriah |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: ![]() ![]() ![]() |
посмотрите пожалуйста прогу, она постоянно выбивает последнюю точку, не смотря на полученные расстояния. я делал прогу только для точек лежащих выше
Код 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 Пол: Мужской Репутация: ![]() ![]() ![]() |
помогите плиз
|
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 8:21 |