Определить, образуют ли точки заданного множества квадрат со сторонами, параллельными осям координат - C (СИ)
Формулировка задачи:
Помогите написать программу
Определить, образуют ли точки заданного множества квадрат со
сторонами, параллельными осям координат.
Мне кажется, что задачу надо разбить на этапы:
1 проверить на кол-во точек (их должно быть минимум 4), если меньше - это уже не квадрат
2 образуют ли точки квадрат
- для этого надо найти, для начала, вершины этого квадрата(точки наиболее удаленные друг от друга).
- потом проверить находятся ли остальные точки на сторонах квадрата
3. параллельна ли сторона А Оси Х или У.
Самым тяжелым мне сдесь видится 2 условие, не могу понять как его выполнять. Заранее спасибо
Решение задачи: «Определить, образуют ли точки заданного множества квадрат со сторонами, параллельными осям координат»
textual
Листинг программы
#include<stdio.h> #include<stdlib.h> int main() { int n, i, j, **a, x_min=0, y_min=0, x_max=0, y_max=0; printf("Kol-vo tochek: "); scanf("%d", &n); a=(int **)malloc(n*sizeof(int*)); for(i=0; i<n; i++) { a[i]=(int *)malloc(2*sizeof(int)); printf("X%d =", i+1); scanf("%d", &a[i][0]); printf("Y%d =", i+1); scanf("%d", &a[i][1]); } // вот здесь пользуетесь координатами: a[i][0] - координата X i-ой точки, a[i][1] - координата Y i-ой точки for(i=0; i<n-1; i++)//проверка координат точек на предмет совпадений for(j=i+1; j<n; j++) if(a[i][0]==a[j][0] && a[i][1]==a[j][1]) printf("Tochki %d i %d sovpadaut\n", i, j); for(i=1; i<n; i++) { if(a[i][0]>a[x_max][0]) x_max=i; if(a[i][0]<a[x_min][0]) x_min=i; if(a[i][1]>a[y_max][1]) y_max=i; if(a[i][1]<a[x_min][1]) y_min=i; } printf("Maximaln znach po X: %d\n", a[x_max][0]); printf("Minimaln znach po X: %d\n", a[x_min][0]); printf("Maximaln znach po Y: %d\n", a[y_max][1]); printf("Minimaln znach po Y: %d\n", a[y_min][1]); for ( i = 0; i < n; ++i ) free(a[i]); free(a); return 0; }
Объяснение кода листинга программы
- Объявление переменных: n (количество точек), i, j, **a (двумерный массив для хранения координат точек), x_min, y_min, x_max, y_max (для хранения минимальных и максимальных координат).
- Ввод количества точек и их координат с помощью scanf.
- Выделение памяти под двумерный массив.
- Проверка совпадения координат точек (если две точки имеют одинаковые координаты, то они выводятся на экран).
- Поиск минимальных и максимальных координат по X и Y.
- Вывод минимальных и максимальных координат на экран.
- Освобождение памяти, выделенной под двумерный массив.
- Возврат 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д