Найти две наиболее удаленные друга от друга точки в заданном множестве точек - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и математическими функциями
- Определяем константу N, которая равна количеству точек в множестве
- Создаем функцию distance, которая вычисляет расстояние между двумя точками в декартовой системе координат
- Создаем массив M, который содержит координаты всех точек в множестве
- Инициализируем переменные max_dist и max_i, max_j, которые будут хранить наибольшее расстояние и индексы точек, образующих это расстояние
- Проходим по всем парам точек в множестве, начиная с первой и заканчивая предпоследней
- Вычисляем расстояние между текущей парой точек и сравниваем его с текущим максимальным расстоянием
- Если текущее расстояние больше или равно максимальному, обновляем значения max_dist, max_i, max_j
- Выводим на экран координаты двух наиболее удаленных точек и расстояние между ними
- Ждем нажатия клавиши для завершения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д