Для точки определить, в области видимости каких камер видео наблюдений она находится - C (СИ)
Формулировка задачи:
Зашел в тупик реализацией на Си ><
Собственно сама задача
Мои попытки реализовать
Тут я хотел сделать проверку попадает ли точка в радиус камер.
На территории имеется N камер видео наблюдений, исходные координаты которых (xi, yi), i=0..N-1, радиусы локации — ri.
б) для точки T(x,y) определить, в области видимости каких камер видео наблюдений она находится;
в) Нарушитель следует из точки A(x1; y1) в точку B(x2; y2). Сколько камер его заметят.
Входные данные:
- число N -количество камер(1<N<=300);
- N строк вида xi, yi, ri.
- координаты точек T(x,y) и A(x1; y1) , B(x2; y2).
Выходные данные:
- первая строка- порядковые номера камер ВН, в области видимости которых находится точка Т;
- вторая строка - количество камер ВН, заметивших нарушителя.
#include <stdio.h> #include <math.h> main(){ int n,xi,yi,ri,x,y,x1,y1,x2,y2; // Переменные вводимые пользователем int i=0; // Переменные цикла /*Входные данные задачи [Б]*/ printf("Введите N -количество камер: "); // Число N -количество камер (1<n<=300) scanf("%d" ,&n); printf("Введите координаты камер: "); // N строк вида xi, yi, ri scanf("%d%d%d" ,&xi,&yi,&ri); printf("Введите координаты точек:\n"); printf("T(x,y): "); // Координаты точек T, A, B scanf("%d%d" ,&x,&y); /*Входные данные Задача [В]*/ printf("A(x1,y1)"); // |---Нарушитель следует из точки [А]---> scanf("%d%d" ,&x1,&y1); printf("B(x2,y2)"); // --->в точку [В]---| scanf("%d%d" ,&x2,&y2); int k,function; //Переменные для расчёта printf("\n"); printf("[Задача 1.2]\n[Задание Б]\n"); function = pow(0-x,2)+pow(0-y,2); //x^2+y^2 if (function<=pow(ri,2)) { //по теореме пифагора проверяем чтобы сумма квадратов координат точки printf("\tНарушитель находится в области видимости\n"); } else { printf("\tНарушитель не находиться в области видимости камер\n"); } }
function = pow(0-x,2)+pow(0-y,2); //x^2+y^2 if (function<=pow(ri,2)) { //Определить попадает ли точка с координатами х,у в круг радиуса r. printf("\tКатер нарушитель находится в области видимости\n"); } else { printf("\tКатер нарушитель не находиться в области видимости радара\n"); }
Решение задачи: «Для точки определить, в области видимости каких камер видео наблюдений она находится»
textual
Листинг программы
#define QCAMS 300 // хотя можно длину в процессе инициализирповать, как у вас //создаем структуру камера #typedef camera struct {double x; double y; double r;}; //создаем структуру камера #typedef point struct {double x; double y;}; camera arr_of_cams[QCAMS]; double distance(point, camera) { return ( camera.r*camera.r - (point.x - camera.x)*(point.x - camera.x) - (point.y - camera.y)*(point.y - camera.y) ) ; } bool in_area(point, camera){ return distance(point, camera) <= 0; } list_of_cams(point, point, camera[] ){ for(int i =0; i < QCAMS; i++){ проход по массиву камер } } // и тд
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д