Реализавать функцию поиска двух точек в массиве наиболее удаленных друг от друга - C (СИ)
Формулировка задачи:
Реализавать функцию поиска двух точек в массиве наиболее удаленных друг от друга. Точки задаются координатами х и у в виде структуры. Массив и его размер передаются в качестве параметров функции. Функция возвращает позиции найденных точек в массиве и расстояние между ними. Используя разработанную функцию осуществить поиск в N массивах, введенных пользавателем. На языке С
Решение задачи: «Реализавать функцию поиска двух точек в массиве наиболее удаленных друг от друга»
textual
Листинг программы
##include <stdlib.h> #include <stdio.h> #include <math.h> typedef struct { float x; float y; //float z; } point; typedef struct { point p1, p2; float d; // расстояние } res; res calc(point *mas, int size); void vvod(point *mas, int size); void vyvod(point *mas, int size); int main() { int size = 0; point *arr; res r; //// printf("Введите число точек в массиве"); scanf("%d", &size); arr = (point*) malloc(size * sizeof(point)); vvod(arr, size); vyvod(arr, size); r = calc(arr, size); printf("Максимальное расстояние между точками с координатами \n"); printf("(%f, %f) и (%f, %f) равно %f", r.p1.x, r.p1.y, r.p2.x, r.p2.y, r.d); free(arr); return 0; } res calc(point *mas, int size) { res r = { { 0, 0 }, { 0, 0 }, 0 }; int i = 0, k = 0; float d = 0; for (i = 0; i < size - 1; ++i) for (k = i + 1; k < size; ++k) { d = sqrt(pow(mas[k].x - mas[i].x, 2) + pow(mas[k].y - mas[i].y, 2)); //printf("\n d = %f", d); if (d > r.d) { r.d = d; r.p1.x = mas[i].x; r.p1.y = mas[i].y; r.p2.x = mas[k].x; r.p2.y = mas[k].y; } } return r; } void vvod(point *mas, int size) { int i = 0; printf("Вводим массив точек"); for (i = 0; i < size; ++i) { printf("т. %d: x, y? ", i); scanf("%f %f", &mas[i].x, &mas[i].y); } } void vyvod(point *mas, int size) { int i = 0; printf("\nИсходный массив"); for (i = 0; i < size; ++i) printf("(%3.4f, %3.4f); ", mas[i].x, mas[i].y); printf("\n"); }
Объяснение кода листинга программы
- Ввод размера массива точек
- Выделение памяти под массив точек
- Ввод координат точек в массив
- Вывод координат точек на экран
- Поиск двух точек в массиве с наибольшим расстоянием между ними
- Вывод результата на экран (наибольшее расстояние и координаты точек)
- Освобождение памяти, выделенной под массив точек
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д