Определить принадлежность точки областям - 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();
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
, , . - Определяется структура POINT, которая содержит два поля: x и y типа float.
- В функции main() инициализируются переменные vertLine и horLine, которые задают вертикальную и горизонтальную линии соответственно.
- Создается структура POINT, в которую пользователь будет вводить координаты точки.
- С помощью функции scanf() пользователь вводит координаты точки.
- Выполняется проверка на принадлежность точки к определенному квадранту.
- Если точка принадлежит квадранту A, выполняется проверка на принадлежность к области A.
- Если точка принадлежит квадранту B, выполняется проверка на принадлежность к области B.
- Если точка не принадлежит ни одному из квадрантов, выводится сообщение о том, что точка не принадлежит ни одной области.
- Выводится сообщение о том, что точка принадлежит области A.
- Выводится сообщение о том, что точка принадлежит области B.
- Программа завершается с помощью функции getch().