Предмет: Информатика,
автор: naticris10
Дана точка А (х,у). Определить, принадлежит ли она прямоугольнику с вершинами в точках (х1,у1), (х2,у2), (х3,у3), (х4,у4)
На Паскале
naticris10:
Никто не дал правильный ответ, всё непонятно. Очень нужно!
Очень прошу решение с помощью case? if, else и всё
Ваше case, if, else подойдет только для случая, когда стороны прямоугольника параллельны осям координат, и только.
Можете написать?
Ответы
Автор ответа:
0
function sq(var x1,y1,x2,y2,x3,y3: real):real;
begin
// вычисляем площадь треугольника с помощью
// векторного произведения
sq:=abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/2;
end;
// основная программа
var x,y,x1,y1,x2,y2,x3,y3,x4,y4,st,sp:real;
begin
write('координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: ');
readln(x1,y1,x2,y2,x3,y3,x4,y4);
sp:=2*sq(x1,y1,x2,y2,x3,y3);
write('координаты точки x y через пробел: '); readln(x,y);
st:=sq(x1,y1,x2,y2,x,y) + sq(x2,y2,x3,y3,x,y) +
sq(x3,y3,x4,y4,x,y) + sq(x4,y4,x1,y1,x,y);
if abs(sp-st)<1.0e-9 then
writeln('точка принадлежит прямоугольнику')
else writeln('точка не принадлежит прямоугольнику');
end.
координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: 1 4 6 9 9 6 4 1
координаты точки x y через пробел: 4 7
точка принадлежит прямоугольнику
координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: 1 4 6 9 9 6 4 1
координаты точки x y через пробел: 1.5 1.6
точка не принадлежит прямоугольнику
begin
// вычисляем площадь треугольника с помощью
// векторного произведения
sq:=abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/2;
end;
// основная программа
var x,y,x1,y1,x2,y2,x3,y3,x4,y4,st,sp:real;
begin
write('координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: ');
readln(x1,y1,x2,y2,x3,y3,x4,y4);
sp:=2*sq(x1,y1,x2,y2,x3,y3);
write('координаты точки x y через пробел: '); readln(x,y);
st:=sq(x1,y1,x2,y2,x,y) + sq(x2,y2,x3,y3,x,y) +
sq(x3,y3,x4,y4,x,y) + sq(x4,y4,x1,y1,x,y);
if abs(sp-st)<1.0e-9 then
writeln('точка принадлежит прямоугольнику')
else writeln('точка не принадлежит прямоугольнику');
end.
координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: 1 4 6 9 9 6 4 1
координаты точки x y через пробел: 4 7
точка принадлежит прямоугольнику
координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: 1 4 6 9 9 6 4 1
координаты точки x y через пробел: 1.5 1.6
точка не принадлежит прямоугольнику
что такое abs, sp, st и sq?
abs - это функция, вычисляющая модуль (абсолютное значение) числа, abs(- 5) = 5, sp - это имя функции, вычисляющей площадь треугольника по координатам трех вершин треугольника, переменная st - для хранения суммы площадей 4 треугольников, если точка (x,y) внутри прямоугольника, переменная sp - для хранения площади прямоугольника. Если точка внутри прямоугольника, то сумма площадей 4 треугольников равна площади прямоугольника.
Автор ответа:
2
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!
begin
var n:=4;
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.
Примеры
Введите парами координаты четырех вершин
1 4 6 9 9 6 4 1
Введите координаты точки: 1.5 1.6
Не внутри
Введите парами координаты четырех вершин
1 4 6 9 9 6 4 1
Введите координаты точки: 4 7
Внутри
// Внимание! Если программа не работает, обновите версию!
begin
var n:=4;
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.
Примеры
Введите парами координаты четырех вершин
1 4 6 9 9 6 4 1
Введите координаты точки: 1.5 1.6
Не внутри
Введите парами координаты четырех вершин
1 4 6 9 9 6 4 1
Введите координаты точки: 4 7
Внутри
Ничего не поняла и, видимо, не пойму. Что тогда вместо отладочного писать, если его убираем? Почему не используем остальные координаты (х1,у1), (х2,у2), (х3,у3), (х4,у4)? Откуда Arr? Я про Паскаль, который изучают в школе и ничего такого мы не проходили.
Это разговор ниочем, кроме самой программы "пришивается" еще куча всякого "барахла".
Вы оттранслировали программу под платформу .NET, получили якобы загрузочный модуль с расширением .exe и вы считаете, что это действительно загрузочный модуль? Это не модуль с командами для процессора, это модуль с кодами псевдоязыка, т.к. это под NET платформу. Если действительно хотите сравнить длину исполняемого кода, то сравните занимаемые области оперативной памяти после загрузки программ.
Мне просто смешно! Как легко можно "завести" человека.
Похожие вопросы
Предмет: Математика,
автор: wpphxtm6fw
Предмет: Экономика,
автор: dimamedvedev8982
Предмет: Алгебра,
автор: jweasp
Предмет: Литература,
автор: 121настя121
Предмет: Математика,
автор: samir27072002