В множестве точек на плоскости найти пару точек с максимальным расстоянием между ними - C (СИ)

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

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

В множестве точек на плоскости найти пару точек с максимальным расстоянием между ними.

Решение задачи: «В множестве точек на плоскости найти пару точек с максимальным расстоянием между ними»

textual
Листинг программы
#include <stdio.h>
#define NUM  5
 
typedef struct {
    int x, y;
} point;
 
int distance(const point* a, const point* b){
    int dx = a->x - b->x;
    int dy = a->y - b->y;
    return dx*dx + dy*dy;
}
 
int main(void){
    int    i, j, m, d;
    point* p1, *p2;
 
    point ds[NUM] = {
        {50,145}, {10,145}, {110,112}, {117,19}, {130,120}
    };
 
    p1 = p2 = &ds[0];
    m  = 0;
    for(i = 0; i < NUM; ++i){
        for(j = i + 1; j < NUM; ++j){
            if((d = distance(&ds[i], &ds[j])) > m){
                m  = d;
                p1 = &ds[i];
                p2 = &ds[j];
            }
        }
    }
 
    if(p1 != p2)
        printf("%d,%d <-> %d,%d\n", p1->x, p1->y, p2->x, p2->y);
    getchar();
    return 0;
}

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

В этом коде используется язык программирования C. Задача заключается в поиске двух точек с максимальным расстоянием между ними в заданном множестве точек на плоскости. Список действий, выполняемых в коде:

  1. Включаем заголовочный файл stdio.h, который содержит функции для ввода и вывода данных.
  2. Определяем константу NUM равную 5, которая указывает количество точек в множестве.
  3. Определяем структуру point, которая представляет точку на плоскости и содержит координаты x и y.
  4. Функция distance вычисляет расстояние между двумя точками, используя формулу dx*dx + dy*dy, где dx и dy - разность координат x и y соответственно.
  5. В функции main создаем массив** ds[NUM] типа point, который содержит NUM точек с координатами.
  6. Начальные значения p1 и p2 указывают на первую точку в массиве ds.
  7. Переменная m инициализируется нулем и будет использоваться для хранения текущего максимального расстояния.
  8. В цикле двойного перебора, для каждой пары точек в массиве ds, вычисляется расстояние между ними с помощью функции distance.
  9. Если это расстояние больше текущего максимального расстояния, обновляются значения m, p1 и p2.
  10. По завершении цикла, если p1 и p2 не равны, выводится сообщение с координатами этих двух точек.
  11. Программа ожидает ввода символа, прежде чем завершиться.
  12. Возвращаем значение 0, что означает успешное выполнение программы.

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

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