Определить принадлежность точки заштрихованной области - PascalABC.NET (24814)
Формулировка задачи:
Пожалуйста, помогите перевести код с c++ на pascal
Решение задачи: «Определить принадлежность точки заштрихованной области»
textual
Листинг программы
type
point = record
x, y : double;
end;
function get : point;
begin
ReadLn(Result.x, Result.y);
end;
function dotline(a, b, d : point) : double := (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x);
function dotdot(a, b, c, d : point) : boolean := dotline(a, b, c) * dotline(a, b, d) >= 0;
begin
var a : point; a.x := -2; a.y := 0;
var b : point; b.x := 0; b.y := 1;
var c : point; c.x := 0; c.y := -1;
var d := get;
if d.x<0 then
if dotdot(a,b,c,d) and dotdot(b,c,a,d) and dotdot(c,a,b,d) then
WriteLn('Точка D принадлежит заштрихованной части плоскости.')
else
WriteLn('Точка D не принадлежит заштрихованной части плоскости.')
else
if sqrt(sqr(d.x) + sqr(d.y))<=1 then
WriteLn('Точка D принадлежит заштрихованной части плоскости.')
else
WriteLn('Точка D не принадлежит заштрихованной части плоскости.');
end.
Объяснение кода листинга программы
В данном коде происходит определение принадлежности точки заштрихованной области на плоскости.
- В начале кода определён тип данных point, который представляет собой запись с координатами точки (x, y).
- Затем определена функция get, которая считывает координаты точки с помощью функции ReadLn.
- Далее определена вспомогательная функция dotline, которая вычисляет скалярное произведение векторов a и b, а также векторов c и d.
- В функции dotdot происходит проверка принадлежности точки d к заштрихованной области на основе скалярного произведения векторов a, b, c и d.
- В основной части кода определены координаты точек a, b и c.
- Затем вызывается функция get для считывания координат точки d.
- Если координаты точки d меньше нуля, то выполняется проверка принадлежности точки d к заштрихованной области с помощью функции dotdot.
- Если условие выполняется, то выводится сообщение о принадлежности точки d к заштрихованной области.
- Если условие не выполняется, то выполняется проверка принадлежности точки d к заштрихованной области с помощью функции dotdot.
- Если условие выполняется, то выводится сообщение о принадлежности точки d к заштрихованной области.
- Если условие не выполняется, то выводится сообщение о том, что точка d не принадлежит заштрихованной области.