Определить принадлежность точки заштрихованной области - PascalABC.NET (24814)
Формулировка задачи:
Пожалуйста, помогите перевести код с c++ на pascal
Листинг программы
- #include <iostream>
- #include <cmath>
- using namespace std;
- struct point {
- double x, y;
- };
- struct point get() {
- struct point a;
- cin >> a.x >> a.y;
- return a;
- }
- double dotline(struct point a, struct point b, struct point d) {
- return (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x);
- }
- bool dotdot(struct point a, struct point b, struct point c, struct point d) {
- return dotline(a, b, c) * dotline(a, b, d) >= 0;
- }
- int main() {
- struct point a, b, c;
- a.x = -2; a.y = 0; b.x = 0; b.y = 1; c.x = 0; c.y = -1;
- struct point d = get();
- if(d.x<0){
- if(dotdot(a,b,c,d) && dotdot(b,c,a,d) && dotdot(c,a,b,d)){
- cout << "Точка D принадлежит заштрихованной части плоскости.";
- } else {
- cout << "Точка D не принадлежит заштрихованной части плоскости.";
- }
- } else {
- if (sqrt(pow(d.x, 2) + pow(d.y, 2))<=1) {
- cout << "Точка D принадлежит заштрихованной части плоскости.";
- }
- else {
- cout << "Точка D не принадлежит заштрихованной части плоскости.";
- }
- }
- return 0;
- }
Решение задачи: «Определить принадлежность точки заштрихованной области»
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 не принадлежит заштрихованной области.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д