Определить принадлежность точки заштрихованной области - C (СИ)

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

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

Дана точка на плоскости с координатами (x, y). Составить программу, которая будет выводить на экран одно из сообщений «Да», «Нет», «На границе». В зависимости от т ого, лежит ли точка внутри, вне или на границе заштрихованной области. Области задаются графически следующим образом:

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

textual
Листинг программы
int InArea(double r,double x,double y)
{
    double l=sqrt(x*x+y*y);
    if(l<=r)
    {
        if(!x || !y || l==r || y==x || x==-y) return 2;
        if(y>0)
        {
            if(x<0 && -x>y) return 1;
            if(x>0 &&  x<y) return 1;
        }
        else
        {
            if(x<0 &&  x>y) return 1;
            if(x>0 && -x<y) return 1;
        }
    }
    return 0;
}
 
int main(int argc,char* argv[])
{
    double r,x,y;
    int res;
 
    setlocale(LC_ALL, "Russian");
    printf("Радиус=");
    scanf("%lf",&r);
    do
    {
        printf("X и Y через пробел:");
        scanf("%lf %lf",&x,&y);
        res=InArea(r,x,y);
        if(!res) printf("Вне области\n");
        else 
            if(res==1) printf("В области\n");
            else printf("На границе\n");
        printf("Еще(Enter)?\n");
    }while(getch()==13);
    return 0;
}

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

  1. Сначала функция InArea принимает три аргумента типа double: радиус r, координату x и координату y.
  2. Затем функция вычисляет значение l, которое представляет собой гипотенузу прямоугольного треугольника с основанием x и y.
  3. Если l меньше или равно r, то функция проверяет, принадлежит ли точка к заштрихованной области.
  4. Если точка принадлежит области, функция возвращает 1.
  5. Если точка находится на границе области, функция возвращает 2.
  6. Если точка не принадлежит области, функция возвращает 0.
  7. Функция main принимает два аргумента типа int и строку, содержащую имя программы.
  8. Затем функция устанавливает локальную настройку для вывода русского языка.
  9. Функция запрашивает у пользователя радиус r и сохраняет его в переменной.
  10. В цикле do-while пользователь вводит координаты x и y и функция InArea проверяет, принадлежит ли точка к заштрихованной области.
  11. Если точка принадлежит области, функция printf выводит сообщение В области.
  12. Если точка находится на границе области, функция printf выводит сообщение На границе.
  13. Если точка не принадлежит области, функция printf выводит сообщение Вне области.
  14. После каждого запроса пользователю предлагается ввести еще один набор координат, нажимая Enter.
  15. Если пользователь нажимает Enter без ввода, программа завершается.
  16. Функция main возвращает 0, указывая, что программа успешно завершилась.

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


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

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

12   голосов , оценка 4.583 из 5
Похожие ответы