Найти две наиболее удаленные друга от друга точки в заданном множестве точек - C (СИ)

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

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

Координаты n точек на плоскости заданы в виде двумерного массива K[l..n,1..2]. Найти номера двух точек, расстояние между которыми наибольшее. Вычисление расстояния между двумя точками организовать в подпрограмме.

Решение задачи: «Найти две наиболее удаленные друга от друга точки в заданном множестве точек»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
#define N 5
 
double distance(int x1, int y1, int x2, int y2)
{
    return sqrt(pow((double)abs(x1 - x2), 2) + pow((double)abs(y1 - y2), 2));
}
 
int main(int argc, char* argv[])
{
    int M[N][2] = { { 3, 2 },
                    { 6, 4 },
                    { 1, 3 },
                    { 9, 1 },
                    { 7, 6 } };
 
    double max_dist = 0.00;
    int max_i = 0, max_j = max_i;
    for (int i = 0; i < N; i++)
        for (int j = i + 1; j < N; j++)
        {
            double d = distance(M[i][0], M[i][1], M[j][0], M[j][1]);
            if (d > max_dist || max_dist == 0.00)
            {
                max_dist = d;
                max_i = i; max_j = j;
            }
        }
 
    printf("(%d,%d) <--> (%d,%d) distance = %lf\n", 
        M[max_i][0],M[max_i][1], M[max_j][0], M[max_j][1], max_dist);
 
    _getch();
 
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с I/O и математическими функциями
  2. Определяем константу N, которая равна количеству точек в множестве
  3. Создаем функцию distance, которая вычисляет расстояние между двумя точками в декартовой системе координат
  4. Создаем массив M, который содержит координаты всех точек в множестве
  5. Инициализируем переменные max_dist и max_i, max_j, которые будут хранить наибольшее расстояние и индексы точек, образующих это расстояние
  6. Проходим по всем парам точек в множестве, начиная с первой и заканчивая предпоследней
  7. Вычисляем расстояние между текущей парой точек и сравниваем его с текущим максимальным расстоянием
  8. Если текущее расстояние больше или равно максимальному, обновляем значения max_dist, max_i, max_j
  9. Выводим на экран координаты двух наиболее удаленных точек и расстояние между ними
  10. Ждем нажатия клавиши для завершения программы

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


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

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

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