IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Геомеьрическая задача
Uriah
сообщение 8.10.2006 0:23
Сообщение #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, то точка находится ниже прямой, и тогда определяем какая точка находится ближе к прямой, путём сравнения расстояний от прямой до точек.
Выводим координаты точки ближайшей к прямой из точек, лежащих ниже неё.


Часть проги я написал: задал множество точек и нашёл расстояния от них до прямой,
необходимо токо кусок чтобы определить точку, ближайшую к прямой, из точек, лежащих выше прямой, и точку ближайшую к прямой, из точек, лежащих ниже. ПОМОГИТЕ, ктонить, ПОЖАЛУЙСТА!!!!!!!!! заранее БЛАГОДАРЕН!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
мисс_граффити
сообщение 8.10.2006 13:19
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


для начала, приведи код уже написанного тобой.
а если прямая вертикальная - как считать "выше" и "ниже"?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 11.10.2006 15:36
Сообщение #3


Гость






Цитата(мисс_граффити @ 8.10.2006 13:19) *

для начала, приведи код уже написанного тобой.
а если прямая вертикальная - как считать "выше" и "ниже"?


я в задал условие, что (a*a+b*b)<>0
 К началу страницы 
+ Ответить 
Гость
сообщение 11.10.2006 16:00
Сообщение #4


Гость






вот часть исходника:

Код
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*a+b*b)<>0 then
l:= (a*X[i]+b*Y[i]+c)/sqrt (a*a+b*b);
writeln (l);
end;





readkey;
end.
 К началу страницы 
+ Ответить 
-Uriah-
сообщение 13.10.2006 17:11
Сообщение #5


Гость






Никто помочь не может?
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Uriah   Геомеьрическая задача   8.10.2006 0:23
мисс_граффити   для начала, приведи код уже написанного тобой. а е...   8.10.2006 13:19
Гость   для начала, приведи код уже написанного тобой. а ...   11.10.2006 15:36
Гость   вот часть исходника: program Mnogestvo; uses Crt;...   11.10.2006 16:00
-Uriah-   Никто помочь не может?   13.10.2006 17:11
Uriah   Подскажите хоть, пожалуйста, допустим я определ бл...   13.10.2006 17:24
volvo   Ты же запоминаешь точки в массиве? Вот и находи д...   13.10.2006 17:37
Uriah   Ты же запоминаешь точки в массиве? Вот и находи ...   13.10.2006 18:55
volvo   Тогда во-первых, объясни почему без индекса? Чтоб ...   13.10.2006 18:58
Uriah   l я взял сначала с индексом, но мой препод сказал ...   13.10.2006 19:04
volvo   А у тебя в задании что, где-то приведены ограничен...   13.10.2006 19:19
Uriah   я учусь в инсте на программиста(1 курс). первая ла...   13.10.2006 19:26
Uriah   с переменной ничего не получается, а вот с массиво...   14.10.2006 18:01
Uriah   посмотрите пожалуйста прогу, она постоянно выбивае...   14.10.2006 19:17
Uriah   помогите плиз   14.10.2006 20:01
Uriah   не понимаю в чём ошибка   14.10.2006 21:00
volvo   В том, что ты определил переменную L как Real, а п...   14.10.2006 21:35
Uriah   это я здесь при записи ошибся, а так она и записан...   15.10.2006 11:44
volvo   А здесь должно быть то же самое, что и у тебя, ина...   15.10.2006 12:04
Uriah   извините,пожалуйста. Помогите плиз   15.10.2006 12:56
Uriah   гляньте кто-нить прогу, пожалуйста, срочно надо   15.10.2006 15:55
Гость   никто не может помочь?   15.10.2006 19:20


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 8:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"