Определить принадлежность точки областям - 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().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д