PascalABC.NET 3.4.0, сборка 1671 от 31.05.2018 Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Число сторон многоугольника:'); var xp:=new real[n]; var yp:=new real[n]; Writeln('Введите парами координаты вершин'); for var i:=0 to n-1 do Read(xp[i],yp[i]); var (x,y):=ReadReal2('Введите координаты точки:'); var (i,j,c):=(0,n-1,False); while i<n do begin if ((yp[i]<=y) and (y<yp[j]) or (yp[j]<=y) and (y<yp [i])) and (x<(xp[j]-xp[i])*(y-yp[i])/(yp[j]-yp[i])+xp[i]) then c:=not c; j:=i; i+=1; end; if c then Writeln('Внутри') else Writeln('Не внутри') end.
Примеры Число сторон многоугольника: 5 Введите парами координаты вершин -5 2 2 6 7 3.1 4.3 -5 -6 -6 Введите координаты точки: 2.1 1.7 Внутри
Число сторон многоугольника: 5 Введите парами координаты вершин -5 2 2 6 7 3.1 4.3 -5 -6 -6 Введите координаты точки: -2 5 Не внутри
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку