Определить, образуют ли точки заданного множества квадрат со сторонами, параллельными осям координат - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите написать программу Определить, образуют ли точки заданного множества квадрат со сторонами, параллельными осям координат. Мне кажется, что задачу надо разбить на этапы: 1 проверить на кол-во точек (их должно быть минимум 4), если меньше - это уже не квадрат 2 образуют ли точки квадрат - для этого надо найти, для начала, вершины этого квадрата(точки наиболее удаленные друг от друга). - потом проверить находятся ли остальные точки на сторонах квадрата 3. параллельна ли сторона А Оси Х или У. Самым тяжелым мне сдесь видится 2 условие, не могу понять как его выполнять. Заранее спасибо

Решение задачи: «Определить, образуют ли точки заданного множества квадрат со сторонами, параллельными осям координат»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int n, i, j, **a, x_min=0, y_min=0, x_max=0, y_max=0;
  7.     printf("Kol-vo tochek: ");
  8.     scanf("%d", &n);
  9.     a=(int **)malloc(n*sizeof(int*));
  10.     for(i=0; i<n; i++)
  11.     {
  12.         a[i]=(int *)malloc(2*sizeof(int));
  13.         printf("X%d =", i+1);
  14.         scanf("%d", &a[i][0]);
  15.         printf("Y%d =", i+1);
  16.         scanf("%d", &a[i][1]);
  17.     }
  18.     // вот здесь пользуетесь координатами: a[i][0] - координата X i-ой точки, a[i][1] - координата Y i-ой точки
  19.     for(i=0; i<n-1; i++)//проверка координат точек на предмет совпадений
  20.         for(j=i+1; j<n; j++)
  21.             if(a[i][0]==a[j][0] && a[i][1]==a[j][1])
  22.                 printf("Tochki %d i %d sovpadaut\n", i, j);
  23.     for(i=1; i<n; i++)
  24.     {
  25.         if(a[i][0]>a[x_max][0])
  26.             x_max=i;
  27.         if(a[i][0]<a[x_min][0])
  28.             x_min=i;
  29.         if(a[i][1]>a[y_max][1])
  30.             y_max=i;
  31.         if(a[i][1]<a[x_min][1])
  32.             y_min=i;
  33.     }
  34.     printf("Maximaln znach po X: %d\n", a[x_max][0]);
  35.     printf("Minimaln znach po X: %d\n", a[x_min][0]);
  36.     printf("Maximaln znach po Y: %d\n", a[y_max][1]);
  37.     printf("Minimaln znach po Y: %d\n", a[y_min][1]);
  38.  
  39.     for ( i = 0; i < n; ++i )
  40.         free(a[i]);
  41.     free(a);
  42.      return 0;
  43. }

Объяснение кода листинга программы

  1. Объявление переменных: n (количество точек), i, j, **a (двумерный массив для хранения координат точек), x_min, y_min, x_max, y_max (для хранения минимальных и максимальных координат).
  2. Ввод количества точек и их координат с помощью scanf.
  3. Выделение памяти под двумерный массив.
  4. Проверка совпадения координат точек (если две точки имеют одинаковые координаты, то они выводятся на экран).
  5. Поиск минимальных и максимальных координат по X и Y.
  6. Вывод минимальных и максимальных координат на экран.
  7. Освобождение памяти, выделенной под двумерный массив.
  8. Возврат 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы