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

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

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

Определить принадлежность точки областям, обозначенным прописными буквами A и B. Малыми буквами обозначены определяемые пользователем параметры рисунка. Координаты точки x и y и другие параметры рисунка вводятся пользователем. Не могу составить корректное условие к задаче. Спасибо.
#include <stdio.h>
#include <locale.h>

void main(){
    float x, y;
    setlocale(LC_ALL, "Russian");
    
    printf("Введите координаты точки(х и у):\n");
    scanf("%f%f", &x, &y);
 
    if ()
        printf("Точка находится в области А.");
    else if ()
        printf("Точка находится в области B.");
    else printf("Точка находится вне областей А и В.\n");
}

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

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
struct POINT
{
    float x, y;
};
 
int main()
{
    float vertLine = 6.0, horLine = 4.0;
    POINT pnt;
    
    printf("Write the x- and y-coordinates of your point:\n");
    scanf("%f%f", &pnt.x, &pnt.y);
    
    if( pnt.x < 0 && pnt.y > 0 )
    {
        if(abs(pnt.x) < abs(pnt.y))
        {
            POINT negatPnt = { -pnt.x, -pnt.y };
            float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
            if( line <= vertLine )
                printf("The point belongs to the A\n");
        }
        else if( abs(pnt.x) >= abs(pnt.y))
        {
            POINT negatPnt = { -pnt.x, -pnt.y };
            float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
            if( line < horLine )
                printf("The point belongs to the A\n");
        }
    }
    else if( pnt.x > 0 && pnt.y < 0 )
    {
        if(abs(pnt.x) < abs(pnt.y))
        {
            POINT negatPnt = { -pnt.x, -pnt.y };
            float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
            if( line >= vertLine )
                printf("The point belongs to the B\n");
        }
        else if( abs(pnt.x) >= abs(pnt.y))
        {
            POINT negatPnt = { -pnt.x, -pnt.y };
            float line = sqrt( (pnt.x - negatPnt.x)*(pnt.x - negatPnt.x) + (pnt.y - negatPnt.y)*(pnt.y - negatPnt.y) );
            if( line > horLine )
                printf("The point belongs to the B\n");
        }
    }
    else
        printf("The point doesn't belong to any area.\n");
 
    getch();
}

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

  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
Похожие ответы