Принадлежит ли точка с координатами (х, у) заданной области? - C (СИ)
Формулировка задачи:
Составить программы на языках Pascal и Си для проверки, принадлежит ли точка с координатами (х, у) в заданной области.
Помогите пожалуйста мне нужно только на С на паскале я сам перепишу.Нужна только область закрашена черным
Решение задачи: «Принадлежит ли точка с координатами (х, у) заданной области?»
textual
Листинг программы
#include <stdio.h>
int main(void)
{
int isInsideEllipse = 0;
int isOutsideAngle = 0;
double x = 0.0;
double y = 0.0;
double k1 = -2.0 / 3.0;
double k2 = 1.0;
double b1 = 19.0 / 3.0;
double b2 = -2.0;
const double b = 3.5;
const double a = 1.5;
scanf("%lf", &x);
scanf("%lf", &y);
if ((((x - 4.5) * (x - 4.5)) / (a * a)) + (((y - 3.5) * (y - 3.5)) / (b * b)) <= 1.0)
{
isInsideEllipse = 1;
}
if ((x >= 5) || (y >= k1 * x + b1) || (y <= k2 * x + b2))
{
isOutsideAngle = 1;
}
if (isInsideEllipse && isOutsideAngle) printf("Yes\n");
else printf("No\n");
return 0;
}
Объяснение кода листинга программы
- Включаем файл с библиотекой функций для работы с вводом/выводом (stdio.h)
- Задаем начальные значения переменных:
- isInsideEllipse = 0 (принадлежит ли точка к эллипсу)
- isOutsideAngle = 0 (принадлежит ли точка к заданному углу)
- x = 0.0
- y = 0.0
- k1 = -2.0/3.0
- k2 = 1.0
- b1 = 19.0/3.0
- b2 = -2.0
- b = 3.5
- a = 1.5
- Считываем значения координат x и y с помощью функции scanf
- Вычисляем значения для проверки принадлежности точки к эллипсу:
- если сумма квадратов разностей координат точки и центров эллипса, деленная на квадрат большой полуоси, меньше или равна 1, то точка принадлежит эллипсу
- Вычисляем значения для проверки принадлежности точки к заданному углу:
- если x больше или равно 5, или y больше или равно k1x + b1, или y меньше или равно k2x + b2, то точка принадлежит заданному углу
- Проверяем оба условия одновременно:
- если точка принадлежит и эллипсу, и заданному углу, выводим
Yes - в противном случае выводим
No
- если точка принадлежит и эллипсу, и заданному углу, выводим