![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 18.12.2010
Сообщений: 3
|
![]()
Здравствуйте!
Помогите пожалуйста со следующей проблемой. Дана задача: На плоскости задается выпуклый N-угольник целочисленными кооpдинатами своих веpшин в порядке обхода по контуpу. Вводятся кооpдинаты точки (X,Y). Опpеделить: a) является ли она веpшиной N-угольника; б) пpинадлежит ли она N-угольнику. Все работает, находит.Вот только не получается составить условие, при котором точка принадлежит ребру многоугольника. У меня выводит это сообщение, когда точка лежит внутри многоугольника. uses crt; type tpoint=record x,y:integer; end; var PG: array[1..100] of TPoint; n,i: integer; result: boolean; x,y:integer; begin clrscr; write('количество вершин многоугольника*: '); readln(n); for i:=1 to n do begin write('введите координаты x ',i,'ой точки: '); readln(pg[i].x); write('введите координаты y ',i,'ой точки: '); readln(pg[i].y); end; write('введите координату x искомой точки: '); readln(x); write('введите координату y искомой точки: '); readln(y); for i:=1 to n do if (X=PG[i].X) and (Y=PG[i].Y) then begin writeln('’®зЄ* (',x,',',y,') пў«пҐвбп ®¤*®© Ё§ ўҐаиЁ* ¬*®Ј®гЈ®«м*ЁЄ*'); repeat until keypressed; exit; end; Result := False; for i:=1 to n-1 do begin { if (Y > PG[i].Y) <> (Y <= PG[i+1].Y) then Continue; if (X - PG[i].X) < (Y - PG[i].Y)*(PG[i+1].X - PG[i].X)/(PG[i+1].Y - PG[i].Y) then Result := not Result; } if (Y >= PG[i].Y) <> (Y< PG[i+1].Y) then Continue; writeln('’®зЄ* (',x,',',y,') **находится на ребре'); if (X - PG[i].X) < (Y - PG[i].Y)*(PG[i+1].X - PG[i].X)/(PG[i+1].Y - PG[i].Y) then Result := not Result; end; if Result then writeln('точка* (',x,',',y,') **находится внутри многоугольника*') else writeln('точка* (',x,',',y,') **находится за пределами многоугольника*'); repeat until keypressed; end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выпуклый четырехугольник | Namyola | Помощь студентам | 2 | 12.06.2011 16:13 |
N-угольник на С++ Borland | magic1 | Помощь студентам | 6 | 11.08.2010 16:47 |
Выпуклый N-угольник | 6AZblJlb | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 08.12.2008 21:35 |
Выпуклый N-угольник и его диагонали | 6AZblJlb | Помощь студентам | 4 | 08.12.2008 00:15 |
Вписанная в выпуклый n-угольник окружность | Nixond | Паскаль, Turbo Pascal, PascalABC.NET | 10 | 15.10.2008 13:28 |