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