В множестве точек на плоскости найти пару точек с максимальным расстоянием между ними - 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, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д