Определить принадлежность точки областям - C (СИ)

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

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

Определить принадлежность точки областям, обозначенным прописными буквами A и B. Малыми буквами обозначены определяемые пользователем параметры рисунка. Координаты точки x и y и другие параметры рисунка вводятся пользователем. Не могу составить корректное условие к задаче. Спасибо.
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3.  
  4. void main(){
  5. float x, y;
  6. setlocale(LC_ALL, "Russian");
  7. printf("Введите координаты точки(х и у):\n");
  8. scanf("%f%f", &x, &y);
  9. if ()
  10. printf("Точка находится в области А.");
  11. else if ()
  12. printf("Точка находится в области B.");
  13. else printf("Точка находится вне областей А и В.\n");
  14. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <conio.h>
  4.  
  5. struct POINT
  6. {
  7.     float x, y;
  8. };
  9.  
  10. int main()
  11. {
  12.     float vertLine = 6.0, horLine = 4.0;
  13.     POINT pnt;
  14.    
  15.     printf("Write the x- and y-coordinates of your point:\n");
  16.     scanf("%f%f", &pnt.x, &pnt.y);
  17.    
  18.     if( pnt.x < 0 && pnt.y > 0 )
  19.     {
  20.         if(abs(pnt.x) < abs(pnt.y))
  21.         {
  22.             POINT negatPnt = { -pnt.x, -pnt.y };
  23.             float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
  24.             if( line <= vertLine )
  25.                 printf("The point belongs to the A\n");
  26.         }
  27.         else if( abs(pnt.x) >= abs(pnt.y))
  28.         {
  29.             POINT negatPnt = { -pnt.x, -pnt.y };
  30.             float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
  31.             if( line < horLine )
  32.                 printf("The point belongs to the A\n");
  33.         }
  34.     }
  35.     else if( pnt.x > 0 && pnt.y < 0 )
  36.     {
  37.         if(abs(pnt.x) < abs(pnt.y))
  38.         {
  39.             POINT negatPnt = { -pnt.x, -pnt.y };
  40.             float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
  41.             if( line >= vertLine )
  42.                 printf("The point belongs to the B\n");
  43.         }
  44.         else if( abs(pnt.x) >= abs(pnt.y))
  45.         {
  46.             POINT negatPnt = { -pnt.x, -pnt.y };
  47.             float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
  48.             if( line > horLine )
  49.                 printf("The point belongs to the B\n");
  50.         }
  51.     }
  52.     else
  53.         printf("The point doesn't belong to any area.\n");
  54.  
  55.     getch();
  56. }

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

  1. Включаются необходимые заголовочные файлы: , , .
  2. Определяется структура POINT, которая содержит два поля: x и y типа float.
  3. В функции main() инициализируются переменные vertLine и horLine, которые задают вертикальную и горизонтальную линии соответственно.
  4. Создается структура POINT, в которую пользователь будет вводить координаты точки.
  5. С помощью функции scanf() пользователь вводит координаты точки.
  6. Выполняется проверка на принадлежность точки к определенному квадранту.
  7. Если точка принадлежит квадранту A, выполняется проверка на принадлежность к области A.
  8. Если точка принадлежит квадранту B, выполняется проверка на принадлежность к области B.
  9. Если точка не принадлежит ни одному из квадрантов, выводится сообщение о том, что точка не принадлежит ни одной области.
  10. Выводится сообщение о том, что точка принадлежит области A.
  11. Выводится сообщение о том, что точка принадлежит области B.
  12. Программа завершается с помощью функции getch().

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


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

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

14   голосов , оценка 3.643 из 5

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

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

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