Определить принадлежность точки заштрихованной области - PascalABC.NET (24814)

Узнай цену своей работы

Формулировка задачи:

Пожалуйста, помогите перевести код с c++ на pascal
Листинг программы
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. struct point {
  5. double x, y;
  6. };
  7. struct point get() {
  8. struct point a;
  9. cin >> a.x >> a.y;
  10. return a;
  11. }
  12. double dotline(struct point a, struct point b, struct point d) {
  13. return (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x);
  14. }
  15. bool dotdot(struct point a, struct point b, struct point c, struct point d) {
  16. return dotline(a, b, c) * dotline(a, b, d) >= 0;
  17. }
  18. int main() {
  19. struct point a, b, c;
  20. a.x = -2; a.y = 0; b.x = 0; b.y = 1; c.x = 0; c.y = -1;
  21. struct point d = get();
  22. if(d.x<0){
  23. if(dotdot(a,b,c,d) && dotdot(b,c,a,d) && dotdot(c,a,b,d)){
  24. cout << "Точка D принадлежит заштрихованной части плоскости.";
  25. } else {
  26. cout << "Точка D не принадлежит заштрихованной части плоскости.";
  27. }
  28. } else {
  29. if (sqrt(pow(d.x, 2) + pow(d.y, 2))<=1) {
  30. cout << "Точка D принадлежит заштрихованной части плоскости.";
  31. }
  32. else {
  33. cout << "Точка D не принадлежит заштрихованной части плоскости.";
  34. }
  35. }
  36. return 0;
  37. }

Решение задачи: «Определить принадлежность точки заштрихованной области»

textual
Листинг программы
  1. type
  2.   point = record
  3.     x, y : double;
  4.   end;
  5.  
  6. function get : point;
  7. begin
  8.   ReadLn(Result.x, Result.y);
  9. end;
  10.  
  11. function dotline(a, b, d : point) : double := (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x);
  12.  
  13. function dotdot(a, b, c, d : point) : boolean := dotline(a, b, c) * dotline(a, b, d) >= 0;
  14.  
  15. begin
  16.   var a : point; a.x := -2; a.y :=  0;
  17.   var b : point; b.x :=  0; b.y :=  1;
  18.   var c : point; c.x :=  0; c.y := -1;
  19.   var d := get;
  20.   if d.x<0 then
  21.     if dotdot(a,b,c,d) and dotdot(b,c,a,d) and dotdot(c,a,b,d) then
  22.       WriteLn('Точка D принадлежит заштрихованной части плоскости.')
  23.     else
  24.       WriteLn('Точка D не принадлежит заштрихованной части плоскости.')
  25.   else
  26.     if sqrt(sqr(d.x) + sqr(d.y))<=1 then
  27.       WriteLn('Точка D принадлежит заштрихованной части плоскости.')
  28.     else
  29.       WriteLn('Точка D не принадлежит заштрихованной части плоскости.');
  30. end.

Объяснение кода листинга программы

В данном коде происходит определение принадлежности точки заштрихованной области на плоскости.

  1. В начале кода определён тип данных point, который представляет собой запись с координатами точки (x, y).
  2. Затем определена функция get, которая считывает координаты точки с помощью функции ReadLn.
  3. Далее определена вспомогательная функция dotline, которая вычисляет скалярное произведение векторов a и b, а также векторов c и d.
  4. В функции dotdot происходит проверка принадлежности точки d к заштрихованной области на основе скалярного произведения векторов a, b, c и d.
  5. В основной части кода определены координаты точек a, b и c.
  6. Затем вызывается функция get для считывания координат точки d.
  7. Если координаты точки d меньше нуля, то выполняется проверка принадлежности точки d к заштрихованной области с помощью функции dotdot.
  8. Если условие выполняется, то выводится сообщение о принадлежности точки d к заштрихованной области.
  9. Если условие не выполняется, то выполняется проверка принадлежности точки d к заштрихованной области с помощью функции dotdot.
  10. Если условие выполняется, то выводится сообщение о принадлежности точки d к заштрихованной области.
  11. Если условие не выполняется, то выводится сообщение о том, что точка d не принадлежит заштрихованной области.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы