Геомеьрическая задача |
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, то точка находится ниже прямой, и тогда определяем какая точка находится ближе к прямой, путём сравнения расстояний от прямой до точек. Выводим координаты точки ближайшей к прямой из точек, лежащих ниже неё. Часть проги я написал: задал множество точек и нашёл расстояния от них до прямой, необходимо токо кусок чтобы определить точку, ближайшую к прямой, из точек, лежащих выше прямой, и точку ближайшую к прямой, из точек, лежащих ниже. ПОМОГИТЕ, ктонить, ПОЖАЛУЙСТА!!!!!!!!! заранее БЛАГОДАРЕН! |
мисс_граффити |
8.10.2006 13:19
Сообщение
#2
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
для начала, приведи код уже написанного тобой.
а если прямая вертикальная - как считать "выше" и "ниже"? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Гость |
11.10.2006 15:36
Сообщение
#3
|
Гость |
|
Гость |
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 |
13.10.2006 17:24
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
Подскажите хоть, пожалуйста, допустим я определ ближайшие расстояния до прямой, как мне обратно вівести координаты этих ближайших точек
|
volvo |
13.10.2006 17:37
Сообщение
#7
|
Гость |
Цитата как мне обратно вівести координаты этих ближайших точек Ты же запоминаешь точки в массиве?Вот и находи два индекса: один - индекс точки с минимальным "положительным" расстоянием (это ближайшая сверху точка), а второй - индекс точки с минимальным "отрицательным" расстоянием (ближайшая снизу точка)... А потом по запомненным индексам просто вытянешь из массива сами точки... |
Uriah |
13.10.2006 18:55
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
Ты же запоминаешь точки в массиве? Вот и находи два индекса: один - индекс точки с минимальным "положительным" расстоянием (это ближайшая сверху точка), а второй - индекс точки с минимальным "отрицательным" расстоянием (ближайшая снизу точка)... А потом по запомненным индексам просто вытянешь из массива сами точки... я запоминаю точки в двух одномерных массивах x,y и мне надо использовать l без индекса |
volvo |
13.10.2006 18:58
Сообщение
#9
|
Гость |
Тогда во-первых, объясни почему без индекса? Чтоб самому себе найти проблемы, а потом долго и упорно их решать?
А во-вторых, приведи, наконец программу (ПОЛНОСТЬЮ, а не отрывок из несущественностей, типа организации ввода), которую до сих пор сделал... Почему все считают, что кто-то должен повторить то же самое, что они уже наваяли? КОМУ нужна помощь, наконец??? |
Uriah |
13.10.2006 19:04
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
l я взял сначала с индексом, но мой препод сказал исправить, чтоб было без него, говорит, что так прога занимает больше места, хотя я и не знаю как это организовать
|
volvo |
13.10.2006 19:19
Сообщение
#11
|
Гость |
А у тебя в задании что, где-то приведены ограничения по "занимаемому месту"? Я этого не нашел...
Извини, но используя ТОЛЬКО два одномерных массива и одну переменную, ты эту задачу НЕ решишь... По крайней мере еще или 6 переменных (4 для хранения координат (X, Y) точки с минимальным расстоянием "над прямой"/"под прямой" и 2 - для сохранения самого мин. значения тоже "над"/"под"), или индексы. Насчет "занимает больше места" - ты что, ОБЕ программы ему показывал, и он сравнил размеры? Откуда он знает, ЧТО БУДЕТ занимать больше места? Он что, провидец? |
Uriah |
13.10.2006 19:26
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
я учусь в инсте на программиста(1 курс). первая лаба была на разработку методов решения задачи, и я использовал l[i], и за это препод снял почти половину балов
за нерациональное решение задачи |
Uriah |
14.10.2006 18:01
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
с переменной ничего не получается, а вот с массивом - всё класс!
|
Uriah |
14.10.2006 19:17
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 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 |
14.10.2006 20:01
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
помогите плиз
|
Uriah |
14.10.2006 21:00
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
не понимаю в чём ошибка
|
volvo |
14.10.2006 21:35
Сообщение
#17
|
Гость |
Цитата не понимаю в чём ошибка В том, что ты определил переменную L как Real, а пытаешься обратиться к ней - как к массиву. Поэтому программа и не компилируется... |
Uriah |
15.10.2006 11:44
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
это я здесь при записи ошибся, а так она и записана как массив, а всё-равно не работает
|
volvo |
15.10.2006 12:04
Сообщение
#19
|
Гость |
А здесь должно быть то же самое, что и у тебя, иначе вся тема просто будет снесена напрочь, как переливание из пустого в порожнее. Нужна помощь - давай ПРАВИЛЬНЫЙ код. Не даешь - тему в мусор. Надоело уже сюсюкаться тут с такими как ты!
|
Uriah |
15.10.2006 12:56
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 20 Пол: Мужской Репутация: 0 |
извините,пожалуйста.
Помогите плиз |
Текстовая версия | 3.06.2024 5:14 |