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 точка не принадлежит прямоугольнику
procedure recursiveprime(num:integer);
var
i:integer;
begin
{тупая проверка *числа* на простоту - пытаемся поделить на все числа от 2 до *числа*/2)
i:=2;
while i<(num div 2) and (num mod i <> 0) do inc(i)
if i=num div 2 then println(num,"- простое!');
if num<60 then recursiveprime(num+1);
end;
begin
recursiveprime(4);
end.
Объяснение:
ну как-то так.. паскаля под рукой нет, лет 7 назад последний раз трогал дельфи
рекурсивная процедура которая вызывает саму себя со следующим числом если переданое ему число меньше 60
проверка на простоту - пытаемся поделить на все числа от 2 до половины проверяемого числа и проверяем остатки.
надеюсь мысль понятна