МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ
Четверг, 25.04.2024, 15:39
ГлавнаяРегистрацияВход Приветствую Вас Гость | RSS

Меню сайта

Категории раздела
Арифметика [1]
Геометрия [1]
Уравнения и неравенства [1]

Наш опрос
Какой язык программирования Вы изучаете
Всего ответов: 1027

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа


Главная » Файлы » Идеи и решения » Геометрия

0004. Пересечение отрезков
15.10.2013, 22:10

0004. Пересечение отрезков


Имя входного файла

input.txt

Имя выходного файла

output.txt

Максимальное время работы на одном тесте

2 секунды

Ограничение по памяти

64 Мб

 

Два отрезка на плоскости заданы целочисленными координатами своих концов в декартовой системе координат. Требуется определить, существует ли у них общая точка. Гарантируется, что отрезки не лежат на одной прямой.

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

Входной файл содержит координаты четырех точек, задающих отрезки. В первой строке содержатся координаты первого конца первого отрезка, разделенные пробелом, во второй ‑ второго конца первого отрезка, в третьей и четвёртой ‑ координаты концов второго отрезка. Все координаты – целые числа, не превосходящие 1 000 000 по абсолютной величине.

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

В выходной файл следует вывести слово "Yes" (без кавычек), если общая точка есть, или слово "No" ‑ в противном случае. В том случае, если пересечение имеется, выведите во второй строке через пробел координаты точки пересечения с точностью пять знаков после запятой.

Пример

input.txt

output.txt

0 0

2 2

0 2

2 0

Yes

1 1

0 0

1 0

0 1

1 1

No


Решение. Очень нерациональное, но для показа идеи

var xmin1, ymin1, xmax1, ymax1, xmin2, ymin2, xmax2, ymax2, x1, x2,y1, y2 : integer;
begin
read (xmin1, ymin1, xmax1, ymax1, xmin2, ymin2, xmax2, ymax2);
if xmin1> xmax1 then
  begin
  x1:= xmin1;
  xmin1:= xmax1;
  xmax1:= x1;
  end;
if xmin2> xmax2 then
  begin
  x2:= xmin1;
  xmin2:= xmax2;
  xmax2:= x2;
  end;
if ymin1 > ymax1 then
begin
 y1:= ymin1;
 ymin1:= ymax1;
 ymax1:= y1;
 end;
 if ymin2 > ymax2 then
begin
 y2:= ymin2;
 ymin2:= ymax2;
 ymax2:= y2;
 end;


if (xmax1 >= xmin2) and (xmax2 >= xmin1) and (ymax1 >= ymin2) and (ymax2 > ymin1) then writeln ('yes') else writeln ('no');

end.
Категория: Геометрия | Добавил: i_elf
Просмотров: 2475 | Загрузок: 0 | Рейтинг: 0.0/0
Всего комментариев: 0
Поиск

Друзья сайта
  • Творческий учитель
  • Сайт ООАКМР
  • Школьный сайт
  • Информатика учебник
  • МОИ

  • Copyright MyCorp © 2024 Сделать бесплатный сайт с uCoz