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

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

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

Заданы координаты вершин двух прямоугольников. Определить их взаимное расположение: пересекаются, не пересекаются, касаются, принадлежит. P.S. Я совсем начинающий. Скажите хотя бы как задать прямоугольник.

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

textual
Листинг программы
#include<stdio.h>
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#include<graphics.h>
int main ()
{
    setlocale(LC_ALL,"Rus");
    int x1, x2, y1, y2;
    int k1, k2, l1, l2;
    printf("Введите координаты противоположных вершин первого прямоугольника:\n");
    printf("x1 = ");scanf("%d", &x1);printf("y1 = ");scanf("%d", &y1);
    printf("x2 = ");scanf("%d", &x2);printf("y2 = ");scanf("%d", &y2);    
    printf("Введите координаты противоположных вершин второго прямоугольника:\n");
    printf("x1 = ");scanf("%d", &k1);printf("y1 = ");scanf("%d", &l1);
    printf("x2 = ");scanf("%d", &k2);printf("y2 = ");scanf("%d", &l2);
    
    initwindow(800,600); //Открываем графическое окно
    rectangle (x1, y1, x2, y2);
    rectangle (k1, l1, k2, l2);
        
//пересекаюся, не пересекаются, касаются, принадлежит.
//x1 > k2 первый правее второго; x2 < k1 первый левее второго 
//y1 > l2 первый ниже второго; y2 < l1 первый выше второго 
    if (x1 > k2 || x2 < k1 || y1 > l2 || y2 < l1)
    {
        outtextxy (5, 500, "Прямоугольники не пересекаюся"); // пересекаются или совпадают
    } else {
        outtextxy (5, 500, "Прямоугольники пересекаюся");
    }
    if (x1 < k1 && y1 < l1 && x2 > k2 && y2 > l2)
    {
        outtextxy (5, 520, "Второй прямоугольник принадлежит первому");
        if (k1 < x1 && l1 < y1 && k2 > x2 && l2 > y2)
        {
            outtextxy (5, 520, "Первый прямоугольник принадлежит второму");    
        }
    }else{
    outtextxy (5, 520, "Прямоугольники не пренадлежат друг другу");    
    }
    if (x1 != k1 && x1 != k2 && x2 == k1 && x2 != k2 && l1 != y1 && l1 != y2 &&  l2 != y1 && l2 != y2)
    {
        outtextxy (5, 540, "Прямоугольники касаются друг другу");
    }else{
        if (x1 != k1 && x1 == k2 && x2 != k1 && x2 != k2 && l1 != y1 && l1 != y2 &&  l2 != y1 && l2 != y2)
        {
            outtextxy (5, 540, "Прямоугольники касаются друг другу");
        }else{
              if (x1 != k1 && x1 != k2 && x2 != k1 && x2 != k2 && l1 != y1 && l1 == y2 &&  l2 != y1 && l2 != y2)
              {
                  outtextxy (5, 540, "Прямоугольники касаются друг другу");
              }else{
                  if (x1 != k1 && x1 != k2 && x2 != k1 && x2 != k2 && l1 != y1 && l1 != y2 &&  l2 == y1 && l2 != y2)
                  {
                      outtextxy (5, 540, "Прямоугольники касаются друг другу");
                  }else{
                      outtextxy (5, 540, "Прямоугольники не касаются друг другу");
                  }
              } 
        }
    }
 
 
    _getch();
    closegraph(); //Закрыть окно с графикой
    return 0;
}

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

  1. Объявлены переменные: x1, x2, y1, y2, k1, k2, l1, l2.
  2. Ввод координат противоположных вершин двух прямоугольников с помощью функции scanf.
  3. Открытие графического окна с помощью функции initwindow.
  4. Отображение прямоугольников с помощью функции rectangle.
  5. Проверка условий для определения взаимного расположения прямоугольников:
    • Если прямоугольники пересекаются или совпадают, выводится сообщение Прямоугольники не пересекаюся.
    • Если второй прямоугольник принадлежит первому, выводится сообщение Второй прямоугольник принадлежит первому.
    • Если прямоугольники касаются друг друга, выводится сообщение Прямоугольники касаются друг другу.
    • Если прямоугольники не пересекаются, не принадлежат друг другу и не касаются друг друга, выводится сообщение Прямоугольники не пренадлежат друг другу.
  6. Закрытие графического окна с помощью функции closegraph.
  7. Возвращение значения 0, что означает успешное выполнение программы.

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


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

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

11   голосов , оценка 4.273 из 5
Похожие ответы