Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 5

Пересечение двух отрезков

28.09.2021, 00:54. Показов 4977. Ответов 1
Метки си (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите с задачкой, всё на что меня хватило - это проверка частного случая, когда прямые вертикальные.

Даны два отрезка: AB и CD. Определите, какое множество точек является пересечением этих отрезков.

Формат входных данных

Программа получает на вход восемь целых чисел, по абсолютной величине не превосходящих 104 — координаты точек A, B, C, D. Точки могут совпадать (в том числе могут совпадать и концы одного отрезка).

ax,ay,bx,by,cx,cy,dx,dy

Формат выходных данных

Если указанные отрезки не пересекаются, то выведите строку "Empty". Если отрезки пересекаются в одной точке, то выведите два числа — координаты точки пересечения. Если пересечением является отрезок, то выведите четыре числа — координаты двух концов отрезка в лексикографическом порядке (то есть сначала нужно вывести ту точку, у которой меньше координата x, а если у них равны координаты x, то ту, у которой меньше координата y). Все числа следует выводить с точностью не менее 6 знаков после запятой.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <math.h>
#include <stdio.h>
 
int main()
{
   float x1, y1, x2, y2, x3, y3, x4, y4, xt, yt;
   scanf("%f%f%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);
   if (x1 - x2 == 0 && x3 - x4 == 0)
   {
       if (x1 == x3)
       {
           if (y1 > y2){
               xt = x2;
               yt = y2;
               x2 = x1;
               y2 = y1;
               x1 = xt;
               y1 = yt;
           }
           if (y3 > y4){
               xt = x4;
               yt = y4;
               x4 = x3;
               y4 = y3;
               x3 = xt;
               y3 = yt;
           }
           if ((y1 <= y3 && y3 <= y2) || (y3 <= y1 && y1 <= y4))
           {
               if (y3 == y2 && y4 > y2)
               {
                   printf("%.10f %.10f", x3, y3);
                   return 0;
               }
               if (y4 == y1 && y3 < y1)
               {
                   printf("%.10f %.10f", x4, y4);
                   return 0;
               }
               if (y3 > y1 && y4 < y2)
               {
                   printf("%.10f %.10f %.10f %.10f", x3, y3, x4, y4);
                   return 0;
               }
                if (y3 < y1 && y4 > y2)
               {
                   printf("%.10f %.10f %.10f %.10f", x1, y1, x2, y2);
                   return 0;
               }
               if (y3 > y1 && y4 > y2)
               {
                   printf("%.10f %.10f %.10f %.10f", x3, y3, x2, y2);
                   return 0;
               }
               if (y3 < y1 && y4 < y2)
               {
                   printf("%.10f %.10f %.10f %.10f", x1, y1, x4, y4);
                   return 0;
               }
           }
           else
           {
               printf("Empty");
               return 0;
           }
       }
   }
   return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2021, 00:54
Ответы с готовыми решениями:

Пересечение двух отрезков
На числовой прямой даны два отрезка: и . Напишите программу, которая находит их пересечение. Это по сути одномерный график, но как можно...

Найти пересечение отрезков
На числовой прямой даны два отрезка: Напишите программу, которая находит их пересечение. Пересечением двух отрезков может быть: ...

Пересечение двух отрезков
Доброго времени суток. Передо мной стоит задача: написать программу для определения, пересекаются ли два отрезка на плоскости, а если...

1
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
28.09.2021, 04:25
Вас на питоне решение устроит?
В Си не умею, лапки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2021, 04:25
Помогаю со студенческими работами здесь

Пересечение отрезков
Петя придумал игру. Два человека пишут на листке координаты начала и конца отрезка на прямой. При этом длинна отрезка не должна превышать...

Пересечение двух прямых
Функция lines_intersection() принимает 4 кортежа точек: первые два – координаты (x, y) точек на одной прямой, следующие два – на второй...

Пересечение двух полигонов
Доброго времени суток! Помогите, пожалуйста, решить такую задачу - нужно найти факт пересечения двух полигонов. На выходе нужно получить...

Пересечение двух списков
Допишите функцию get_together_games(): она должна принимать на вход два списка, а возвращать — множество игр, названия которых есть в обоих...

Пересечение двух треугольников
Здравствуйте. Помогите пожалуйста с решением задачи, а конкретнее: Есть два треугольника(один треугольник движется на встречу другому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru