Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
2 / 2 / 5
Регистрация: 01.10.2013
Сообщений: 203

Находится ли точка с заданными координатами на одной из сторон многоугольника.

01.10.2013, 22:23. Показов 1485. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Многоугольник задан координатами своих вершин. Определить, находится ли точка с заданными координатами на одной из сторон многоугольника.

Помогите пожалуйста. Вот что я наработал

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uses crt;
var
  N, ix, iy, x, y: integer;
  ax:array [1..100] of integer;
  ay:array [1..100] of integer;
  
begin
  write('Введите количество сторонон многоугольника ');
  readln(N);
  write('Введите координаты (x) вершин многоугольника: ');
  for ix:= 1 to N do
    read(ax[ix]);
  write('Введите координаты (y) вершин многоугольника: ');
  for iy:= 1 to N do  
    read(ay[iy]);
  write('Введите координаты точки ');
  readln(x,y);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2013, 22:23
Ответы с готовыми решениями:

Находится ли точка с заданными координатами на одной из сторон многоугольника.
Знающие люди помогите пожалуйста с задачей. Вот задание: Многоугольник задан координатами своих вершин. Определить, находится ли...

Определить четверть, в которой находится точка с заданными координатами
Здравствуйте помогите мне с задачами срочно я вас прошу!!! Переменные k присвоят номер четверти на координатной плоскости , в которой...

Находится ли точка с произвольно заданными координатами в заштрихованной области
Составить программу, позволяющую определить, находится ли точка с произвольно заданными координатами в заштрихованной области. Если точка...

6
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
02.10.2013, 11:58
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
uses crt;
const t=0.001;
function IsLine(x1,y1,x2,y2,x,y:real):boolean;
var p:real;
begin
if x1=x2 then {если сторона вертикально}
 begin
  if (x=x1) and(((y<=y1)and(y>=y2))or((y>=y1)and(y<=y2))) then IsLine:=true
  else IsLine:=false;
 end
else
 begin
  p:=(x-x2)/(x1-x2);
  if (abs(p*y1+(1-p)*y2-y)<t)and((p>=0)and(p<=1))then IsLine:=true
  else IsLine:=false
 end;
end;
 
var N, i, x, y, i1: integer;
    ax:array [1..100] of integer;
    ay:array [1..100] of integer;
    f:boolean;
begin
write('Введите количество сторонон многоугольника ');
readln(N);
write('Введите координаты вершин многоугольника в порядке обхода: ');
for i:=1 to N do
 begin
  writeln('Вершина ',i);
  write('x='); readln(ax[i]);
  write('y='); readln(ay[i]);
 end;
ax[n+1]:=ax[1]; {замкнем}
ay[n+1]:=ay[1];
writeln('Введите координаты точки ');
readln(x,y);
f:=false;
i:=1;
while(i<=n)and not f do
if IsLine(ax[i],ay[i],ax[i+1],ay[i+1],x,y) then
 begin
  f:=true;
  i1:=i
 end
else i:=i+1;
if f then
 begin
  if i1=n then write('Точка лежит на стороне 1-',n)
  else write('Точка лежит на стороне ',i1,'-',i1+1)
 end
else write('Точка не лежит на стороне');
readln
end.
2
2 / 2 / 5
Регистрация: 01.10.2013
Сообщений: 203
03.10.2013, 00:02  [ТС]
Спасибо)

Добавлено через 29 минут
Pascal
1
2
3
4
5
begin
  p:=(x-x2)/(x1-x2);
  if (abs(p*y1+(1-p)*y2-y)<t)and((p>=0)and(p<=1))then IsLine:=true
  else IsLine:=false
 end;
Не могли бы вы разъяснить эту часть кода?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2013, 07:13
Честно говоря в геометрии тоже не очень. Попробуйте разобраться сами, почитав например это
http://algolist.manual.ru/math... /otr2d.php
и другие ссылки по запросу Принадлежность точки отрезку

Добавлено через 5 минут
Здесь кратко изложена суть
http://gospodaretsva.com/urok-... rezku.html
0
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 3
07.10.2013, 20:48
В строчке "if (abs(p*y1+(1-p)*y2-y)<t)and((p>=0)and(p<=1))then IsLine:=true" присутствует переменная t, которой раньше не появлялось. Что это за переменная и что такое IsLine?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.10.2013, 07:24
Цитата Сообщение от Happymilk Посмотреть сообщение
Что это за переменная и что такое IsLine?
Код вообще-то смотрели?
Это функция определения принадлежности точки отрезку, написана в строках 3-17
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function IsLine(x1,y1,x2,y2,x,y:real):boolean;
var p:real;
begin
if x1=x2 then {если сторона вертикально}
 begin
  if (x=x1) and(((y<=y1)and(y>=y2))or((y>=y1)and(y<=y2))) then IsLine:=true
  else IsLine:=false;
 end
else
 begin
  p:=(x-x2)/(x1-x2);
  if (abs(p*y1+(1-p)*y2-y)<t)and((p>=0)and(p<=1))then IsLine:=true
  else IsLine:=false
 end;
end;
Добавлено через 1 минуту
Цитата Сообщение от Happymilk Посмотреть сообщение
присутствует переменная t, которой раньше не появлялось.
То же самое, глазки свои протрите...
строка 2
Pascal
1
const t=0.001;
это точность сравнения вычисленных вещественных чисел.
0
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 3
09.10.2013, 21:16
Прошу прощения. Сонный был.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2013, 21:16
Помогаю со студенческими работами здесь

Определить область, в которой находится точка с заданными координатами
Помагите построить программу на паскале 1)Дано а,b если а-(b^2)&gt;2 вычеслить Z=(a+b)/4+Ln(a) если z&gt;3.5 , вычеслить t=...

Определить номер области N в которой находится точка М(х,у) с заданными координатами

Определить номер области, в которой находится точка с заданными координатами
Определить номер N области, в которой находиться точка M(x,y) с заданными координатами. Границы области относить к области с наибольшим...

Определить номер N области, в которой находится точка М(х,у) с заданными координатами
Определить номер N области, в которой находится точка М(х,у) с заданными координатами. Границы области относить к области с наибольшим...

Определить номер области, в которой находится точка с заданными координатами №2
С этим можете помочь? Задание такое же как вверху


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru