LINUX.ORG.RU

Задачка


0

0

Есть a,b,c,d где a,b и c,d отрезки, соответственно a <= b , c <= d, причем a >= 0, c >= 0, b < +(бесконечность), d < +(бесконечность).

Как подсчитать на сколько процентов входит отрезок cd в отрезок ab, т.е. на сколько процентов у них идет пересечение?

В данной задачке не понятно что брать за 100%, если b или d уходят в бесконечность... :( Можно конечно как вариант сразу говорить, что подходят на 50%, если есть пересечение на каком то промежутке в обоих отрезках.
В общем помогите плиз... уже давно бьюсь перебрал множество вариантов... но у каждого какой либо недостаток...

★★★

Студентов по прежнему кормят всякой х-нёй :(

CKulT
()

а что есть "а сколько процентов у них идет пересечение" ? Пересечение отрезков - это же точка.

CKulT
()
Ответ на: комментарий от CKulT

to CKulT Я не студент... просто не могу справиться... старею видно :(

>а что есть "а сколько процентов у них идет пересечение" ? Пересечение отрезков - это же точка.

Да не правильно выразился... отрезки паралельные ;)

Ну например a = 1, b = 3 => длинна отрезка 2 c = 2, d = 10 => длинна отрезка 8

а общая длинна у этих отрезков от 2 до 3... т.е. общая длинна 1

Mrak ★★★
() автор топика
Ответ на: комментарий от CKulT

Допустим да! Хоть Х... суть задачи другая... а суть я вроде выразил

Mrak ★★★
() автор топика
Ответ на: комментарий от CKulT

>Если да, то простая арифметика if(c < a) ... if (c > a) ...

И что сие значит... еще раз вопрос:

Как подсчитать на сколько процентов входит отрезок cd в отрезок ab, т.е. на сколько процентов у них идет пересечение?

Что то у меня подозрение что от студента слышу ;)

Mrak ★★★
() автор топика
Ответ на: комментарий от Mrak

Да, но я такой фигнёй не занимался уже года 3 ... Башку ломать над отрезками ... :)))

Ты меня не понял вроде как. Сначала определи, пересекаются ли они вообще. потом какая точка самая крайняя слева (a или c), потом справа - b или d, потом можно уже и общую часть высчитвать ...

CKulT
()
Ответ на: комментарий от CKulT

Ну допустим

k = (a < c)? a : c;

l = (b > d)? b : d;

>потом можно уже и общую часть высчитвать ...

А что делать с бесконечностью? Как высчитывать?

Mrak ★★★
() автор топика
Ответ на: комментарий от CKulT

Хм, а если оба отрезка стремятся к бесконечности, то и процент перекрывания будет стремиться к 100%... ну а если один отрезок бесконечный, а другой - нет, тогда процент перекрывания стремится к 0 относительно бесконечного отрезка, либо к определённому числу (которое уже можно узнать), относительно ограниченного отрезка.
Только имхо!

Slay
()
Ответ на: комментарий от Pi

Pi, я говорю про бесконечность в программировании. Вроде курсе на 2м решая такие же задачки я встречал "бесконечность", на самом деле это некое макимально достижимое число типа long или long long.

CKulT
()

А в чем проблема? если b < +(бесконечность) и d < +(бесконечность), стало быть значения конечные и никто в бесконечность не уходит.

ansky ★★★★★
()
Ответ на: комментарий от ansky

>А в чем проблема?

Может я уже математику подзабыл... но я имелл ввиду, что b,d могут уходить в бесконечность ;)

Mrak ★★★
() автор топика

Анекдот.

Задумал однажды человек получить бесплатную консультацию врача. Всретил того на улице и спрашивает: "Доктор, а что бы вы делали если бы ..." и описал интересующие его симптомы. На что тот ответил: "Обратился бы к врачу."

DonkeyHot ★★★★★
()

> Есть a,b,c,d где a,b и c,d отрезки,
соответственно a <= b , c <= d,
причем a >= 0, c >= 0, b < +(бесконечность), d < +(бесконечность). 

> Как подсчитать на сколько процентов входит отрезок cd в отрезок ab,
т.е. на сколько процентов у них идет пересечение?

    a|--------------------------|b
    x|-------------|y
c|-----------------|d

Здесь: [x,y] = y-x

x:=0;
y:=0;
if (c<a) then x:=a else x:=c;
if (d<b) then y:=d else y:=b;
chisl:=y-x;
znam:=b-a;
z=(chisl/znam)*100;

anonymous
()
Ответ на: комментарий от anonymous

Хоть один человек решил помочь, а не просто /dev/hands почесать ;)

>znam:=b-a;

А если b уходит в бесконечность? Что делать при расчете процентов? Есть идеи?

Mrak ★★★
() автор топика
Ответ на: комментарий от Mrak

> А если b уходит в бесконечность? Что делать при расчете процентов? Есть идеи?

Говоришь, что разрядность машины ограничена и пишешь 0 (нуль).

anonymous
()
Ответ на: комментарий от anonymous

Если b>a>0 d>c>0, и если: -b и c стремятся к бесконечности, тогда разница длин отрезков ab и cd есть бесконечно малая величина, следовательно процентное сотношение из стремится к 100%

Вообще задача предназначена для решения на листе бумаги

anonymous
()

как я понял задача такова:

1) есть четыре точки на R -- a,b,c,d
2) точки a,c фиксированы,
3) точки b,d каким-то образом стремятся к бесконечности: b=b(t), d=d(t)
lim b(t) = lim d(t) = inf при t->inf

вопрос: как ведет себя соотношение длин отрезков [a,b]^[c,d] и [c,d]
(здесь ^ обозначает пересечение)

решение:
будем считать что b,d достаточно большие -- больше чем a и c.
тогда длина пересечения: min(b,d)-max(a,c)
искомое отношение: (min(b,d)-max(a,c))/(d-c)
при t->inf
lim((min(b,d)-max(a,c))/(d-c)) = lim(min(b(t),d(t))/d(t))

этот предел может существовать или не существовать, в зависимости от
того какова зависимость b,d от t. Если предел существует, он находится
на отрезке [0,1]. В том виде, в каком она сформулирована, задача однозначного
ответа не имеет.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.