Для точки определить, в области видимости каких камер видео наблюдений она находится - 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). Выходные данные: - первая строка- порядковые номера камер ВН, в области видимости которых находится точка Т; - вторая строка - количество камер ВН, заметивших нарушителя.
Мои попытки реализовать
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. main(){
  4. int n,xi,yi,ri,x,y,x1,y1,x2,y2; // Переменные вводимые пользователем
  5. int i=0; // Переменные цикла
  6. /*Входные данные задачи [Б]*/
  7. printf("Введите N -количество камер: "); // Число N -количество камер (1<n<=300)
  8. scanf("%d" ,&n);
  9. printf("Введите координаты камер: "); // N строк вида xi, yi, ri
  10. scanf("%d%d%d" ,&xi,&yi,&ri);
  11. printf("Введите координаты точек:\n");
  12. printf("T(x,y): "); // Координаты точек T, A, B
  13. scanf("%d%d" ,&x,&y);
  14. /*Входные данные Задача [В]*/
  15. printf("A(x1,y1)"); // |---Нарушитель следует из точки [А]--->
  16. scanf("%d%d" ,&x1,&y1);
  17. printf("B(x2,y2)"); // --->в точку [В]---|
  18. scanf("%d%d" ,&x2,&y2);
  19. int k,function; //Переменные для расчёта
  20. printf("\n");
  21. printf("[Задача 1.2]\n[Задание Б]\n");
  22. function = pow(0-x,2)+pow(0-y,2); //x^2+y^2
  23. if (function<=pow(ri,2)) { //по теореме пифагора проверяем чтобы сумма квадратов координат точки
  24. printf("\tНарушитель находится в области видимости\n");
  25. }
  26. else {
  27. printf("\tНарушитель не находиться в области видимости камер\n");
  28. }
  29. }
Тут я хотел сделать проверку попадает ли точка в радиус камер.
Листинг программы
  1. function = pow(0-x,2)+pow(0-y,2); //x^2+y^2
  2. if (function<=pow(ri,2)) { //Определить попадает ли точка с координатами х,у в круг радиуса r.
  3. printf("\tКатер нарушитель находится в области видимости\n");
  4. }
  5. else {
  6. printf("\tКатер нарушитель не находиться в области видимости радара\n");
  7. }

Решение задачи: «Для точки определить, в области видимости каких камер видео наблюдений она находится»

textual
Листинг программы
  1. #define QCAMS 300 // хотя можно длину в процессе инициализирповать, как у вас
  2. //создаем структуру камера
  3. #typedef  camera   struct {double x; double y; double r;};
  4. //создаем структуру камера
  5. #typedef  point      struct {double x; double y;};
  6. camera arr_of_cams[QCAMS];
  7. double distance(point, camera)  {
  8. return ( camera.r*camera.r - (point.x - camera.x)*(point.x - camera.x) - (point.y - camera.y)*(point.y - camera.y) ) ;
  9. }
  10. bool in_area(point, camera){
  11. return  distance(point, camera) <= 0;
  12. }
  13.  list_of_cams(point, point, camera[] ){
  14. for(int i =0; i < QCAMS; i++){
  15. проход по массиву камер
  16. }
  17. }
  18. // и тд

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


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

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

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы