Определить взаимное расположение двух заданных прямоугольников (пересекаются, не пересекаются, касаются) - 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; }
Объяснение кода листинга программы
- Объявлены переменные: x1, x2, y1, y2, k1, k2, l1, l2.
- Ввод координат противоположных вершин двух прямоугольников с помощью функции scanf.
- Открытие графического окна с помощью функции initwindow.
- Отображение прямоугольников с помощью функции rectangle.
- Проверка условий для определения взаимного расположения прямоугольников:
- Если прямоугольники пересекаются или совпадают, выводится сообщение
Прямоугольники не пересекаюся
. - Если второй прямоугольник принадлежит первому, выводится сообщение
Второй прямоугольник принадлежит первому
. - Если прямоугольники касаются друг друга, выводится сообщение
Прямоугольники касаются друг другу
. - Если прямоугольники не пересекаются, не принадлежат друг другу и не касаются друг друга, выводится сообщение
Прямоугольники не пренадлежат друг другу
.
- Если прямоугольники пересекаются или совпадают, выводится сообщение
- Закрытие графического окна с помощью функции closegraph.
- Возвращение значения 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д