Расстояние между точками - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана задача На плоскости заданы n точек: (x1,y1), (x2,y2)… (xn,yn). Найти наименьшее из расстояний от точки (x0,y0) до всех остальных. Вычисление длины отрезка оформить в виде подпрограммы. Вроде все понятно, нужно занести формулу вычисления расстояния между двумя точками(L=√(x-x0)²+(y-y0)²) в функцию и в цикле повторять ее в зависимости от n Вот только каким образом туда ее занести

Решение задачи: «Расстояние между точками»

textual
Листинг программы
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <math.h> 
# include <time.h>
 
int vect_coord[20][1]; // массив содержащий координаты отрезков
int n; // количество точек
 
//генерируем координаты в зависимости от количества точек
void generate_coords(int n1) 
{ 
  for(int i=0;i<=n;i++) 
  { 
    for(int j=0;j<=1;j++) 
    { 
     vect_coord[i][j]=rand() % 20; 
 // printf(" elem coords is  %i", vect_coord[i][j]); 
   }
  }
 getch();
} 
 
 int main() 
 { 
  int x0, y0, x, y, n; 
  int L[20]; //вектор содержащий длины отрезков 
  int min=0; 
  printf("Vvrdite nachalnuyu koordinatu x  "); 
  scanf("%i", &x0); 
  printf("\n"); 
  printf("Vvrdite nachalnuyu koordinatu y  "); 
  scanf("%i", &y0); 
  printf("\n"); 
  printf("Vvrdite kolichestvo tochek n  "); 
  scanf("%i", &n); 
  printf("\n"); 
  
  generate_coords(n); 
 
  // находим длину отрезков
  for(int i=0;i<=n;i++) 
  {
     for(int j=0;j<=1;j++) 
      { 
       if(j==0) 
        {
        
        x=vect_coord[i][j]; 
         printf ("X is %i", x); printf("\n"); 
       }
       if(j==1) 
         {
                 y=vect_coord[i][j];
                 printf("Y is %i", y); printf("\n"); 
         }
      }
    L[i]=sqrt(pow((x-x0),2)+pow((y-y0),2));
    printf("L is  %i", L[i]); printf("\n");
    getch();
  } 
  // выводим длину отрезков на экран
  for(int i=0;i<=n;i++) 
  { 
    printf(" length is %i",  L[i]); printf("\n");
  } 
   
  // находим минимальную длину
  min = L[0]; 
  for(int i=0; i<=n; i++) 
   { 
     if(min>L[i])  min=L[i]; 
   } 
   printf("Minimum is  %i", min); 
   getch(); 
   
  return 0; 
 }

Объяснение кода листинга программы

В данном коде решается задача нахождения расстояния между точками. Список действий:

  1. Подключение необходимых библиотек.
  2. Объявление массива для хранения координат отрезков и переменной для количества точек.
  3. Генерация случайных координат для каждого отрезка (с помощью функции rand() и ограничения на максимальное значение 20).
  4. Ввод начальных координат (x0, y0) и количества точек (n) с помощью функции scanf().
  5. Вызов функции generate_coords(n), которая генерирует координаты отрезков.
  6. Поиск длины каждого отрезка с помощью формулы расстояния между двумя точками (sqrt(pow((x-x0),2)+pow((y-y0),2))).
  7. Вывод длины каждого отрезка на экран с помощью функции printf().
  8. Вывод минимальной длины отрезка, найденной с помощью цикла и функции min().
  9. Возврат 0, означающий успешное выполнение программы.

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


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

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

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