Для точки определить, в области видимости каких камер видео наблюдений она находится - 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++){
проход по массиву камер
}
}
// и тд

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы