В множестве точек на плоскости найти пару точек с максимальным расстоянием между ними - 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. Задача заключается в поиске двух точек с максимальным расстоянием между ними в заданном множестве точек на плоскости. Список действий, выполняемых в коде:
- Включаем заголовочный файл
stdio.h
, который содержит функции для ввода и вывода данных. - Определяем константу
NUM
равную 5, которая указывает количество точек в множестве. - Определяем структуру
point
, которая представляет точку на плоскости и содержит координатыx
иy
. - Функция
distance
вычисляет расстояние между двумя точками, используя формулуdx*dx + dy*dy
, гдеdx
иdy
- разность координатx
иy
соответственно. - В функции main создаем массив**
ds[NUM]
типаpoint
, который содержитNUM
точек с координатами. - Начальные значения
p1
иp2
указывают на первую точку в массивеds
. - Переменная m инициализируется нулем и будет использоваться для хранения текущего максимального расстояния.
- В цикле двойного перебора, для каждой пары точек в массиве
ds
, вычисляется расстояние между ними с помощью функцииdistance
. - Если это расстояние больше текущего максимального расстояния, обновляются значения
m
,p1
иp2
. - По завершении цикла, если
p1
иp2
не равны, выводится сообщение с координатами этих двух точек. - Программа ожидает ввода символа, прежде чем завершиться.
- Возвращаем значение 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д