Определить принадлежность точки заштрихованной области - 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; }
Объяснение кода листинга программы
- Сначала функция
InArea
принимает три аргумента типаdouble
: радиусr
, координатуx
и координатуy
. - Затем функция вычисляет значение
l
, которое представляет собой гипотенузу прямоугольного треугольника с основаниемx
иy
. - Если
l
меньше или равноr
, то функция проверяет, принадлежит ли точка к заштрихованной области. - Если точка принадлежит области, функция возвращает
1
. - Если точка находится на границе области, функция возвращает
2
. - Если точка не принадлежит области, функция возвращает
0
. - Функция
main
принимает два аргумента типаint
и строку, содержащую имя программы. - Затем функция устанавливает локальную настройку для вывода русского языка.
- Функция запрашивает у пользователя радиус
r
и сохраняет его в переменной. - В цикле do-while пользователь вводит координаты
x
иy
и функцияInArea
проверяет, принадлежит ли точка к заштрихованной области. - Если точка принадлежит области, функция
printf
выводит сообщениеВ области
. - Если точка находится на границе области, функция
printf
выводит сообщениеНа границе
. - Если точка не принадлежит области, функция
printf
выводит сообщениеВне области
. - После каждого запроса пользователю предлагается ввести еще один набор координат, нажимая Enter.
- Если пользователь нажимает Enter без ввода, программа завершается.
- Функция
main
возвращает0
, указывая, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д