IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> задачка на геометрию, очень сложная по моему
Bard
сообщение 12.01.2008 0:05
Сообщение #1


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

Репутация: -  3  +


У меня тут одна задачка появилась , никак не могу решить mega_chok.gif .Она тоже с acm.timus.ru. У меня несколько(т.е. 12) тестов проходит nea.gif . Спрашивал у всех учителей математики нашей школы. Каждый говорит одно, но никакой из тех алго не проходит. norespect.gif Самый лучший пока мой собственный cool.gif .

Ну в задаче, если коротко описать, нужно определить можно ли поместить второй треугольник в первый. Длина сторон каждого заданы. Мой алгоритм не очень уж и трудный. Я сначала нахожу сторону с макс. длиной и беру его как за основание(это действие выполняю для обоих). Потом сраниваю основания и вершины(по основанию) и выдаю ответ. Вот и мой код:

var
k,l1,l2,a,b,c,x,y,z:longint;
h1,h2,p1,p2:extended;

function max(x,y,z:longint):longint;
begin
if (x>=y)and(x>=z) then max:=x
else
if (y>=z)and(y>=x) then max:=y
else max:=z;
end;

procedure smen(var a,b,c:longint; l:longint);
begin
if a=l then
begin
k:=c;
c:=a;
a:=k;
end else
if b=l then
begin
k:=c;
c:=b;
b:=k;
end;
end;

begin
readln(x,y,z);
readln(a,b,c);
p2:=(a+b+c)/2;
p1:=(x+y+z)/2;
l1:=max(x,y,z);
l2:=max(a,b,c);
smen(x,y,z,l1);
h1:=(2/z)*sqrt(p1*(p1-x)*(p1-y)*(p1-z));
hx:=(2/x)*sqrt(p1*(p1-x)*(p1-y)*(p1-z));
hy:=(2/y)*sqrt(p1*(p1-x)*(p1-y)*(p1-z));
smen(a,b,c,l2);
h2:=(2/c)*sqrt(p2*(p2-a)*(p2-b)*(p2-c));
ha:=(2/a)*sqrt(p2*(p2-a)*(p2-b)*(p2-c));
hb:=(2/b)*sqrt(p2*(p2-a)*(p2-b)*(p2-c));
if not ((l1>=l2)and(h1>=h2)) then writeln('NO')
else writeln('YES');
end.



Я даже знаю где у меня ошибка но не знаю как ее исправить. Ошибка у меня при том случае если основание и высота первого больше но второй треугольник не входит(у меня выдает что входит).

Недаюь сможете помочь. Заранее спасибо... smile.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Rian
сообщение 14.01.2008 19:32
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 394
Пол: Мужской

Репутация: -  9  +


Слушайте, а если обойтись простой логикой?
Если основание1 первого треугольника больше основания второго треугольника, то можно проверять дальше.
Если левое ребро первого треугольника больше левого ребра второго треугольника и
правое ребро первого треугольника больше правого ребра второго треугольника, то второй треугольник можно поместить внутрь первого.

т.к. основанием первого треугольника может быть любая из сотрон, то надо проверять три раза (конечно через цикл)


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Bard   задачка на геометрию   12.01.2008 0:05
Айра   т.е. примерно так выглядят треугольники: Может т...   12.01.2008 1:31
Michael_Rybak   Полное решение этой задачи - очень, очень сложное....   12.01.2008 4:12
Bard   да именно для этой задачи :yes2: И это пробов...   12.01.2008 11:11
Michael_Rybak   Ну ок, давай попробуем. А = тот треугольник, ВНУТ...   12.01.2008 15:35
feniks25   Слушайте, а если обойтись простой логикой? Если ос...   14.01.2008 19:32
Michael_Rybak   Отлично. Теперь придумай контрпример для своего у...   14.01.2008 19:40
feniks25   Отлично. Теперь придумай контрпример для своего у...   14.01.2008 21:04
Michael_Rybak   Нет, это ты назови стороны двух треугольников. Под...   14.01.2008 21:47
feniks25   Нет, это ты назови стороны двух треугольников. По...   14.01.2008 22:12
Michael_Rybak   Я не спешу :) И автору твое сообщение не поможет....   14.01.2008 22:17
feniks25   Ладно, сам уже нашёл. Написал бы цифры было проще.   14.01.2008 22:28
Michael_Rybak   Конечно. А если бы сдал за автора задачу на тимус...   14.01.2008 22:48
Айра   А можно мне пример? :10: Кстати, а треугольники н...   14.01.2008 23:28
Michael_Rybak   И тебе нельзя! :D Ну если правда хочешь, то...   14.01.2008 23:52
Айра   Получается тут можно попробовать как бы зеркально...   15.01.2008 0:34
Michael_Rybak   Угу. На самом деле достаточно написать одну проц...   15.01.2008 0:41
Bard   ну это мы поняли что у меня алго не работает. а ...   15.01.2008 1:03
feniks25   а что если я добавлю в мою программу сравнение уг...   15.01.2008 9:23
Client   Т.е. отсортировать по величинам длин сторон? так ч...   15.01.2008 10:39
feniks25   Т.е. отсортировать по величинам длин сторон? Не...   15.01.2008 11:49
Michael_Rybak   Ну попробуй. По-моему - нельзя. Да. Но варианто...   15.01.2008 11:19
Айра   Про высоту не забываем))   15.01.2008 13:10
Гость   Про высоту не забываем)) Ну а высота то, что на...   15.01.2008 14:42
Айра   Поднимаем левую точку на 1-цу -> высоты становя...   15.01.2008 19:58
feniks25   совмещаем вершины, что напротив оснований, и о, ч...   15.01.2008 22:51
Michael_Rybak   Тогда можно основание черного уменьшить вдвое (под...   15.01.2008 23:57
Bard   Абсолютно согласен. Нам нужно найти такой алгорит...   16.01.2008 19:51
feniks25   А как можно определить на какие точки, в координа...   16.01.2008 20:33
Bard   Всем привет... Огромное спасибо всем кто принял ак...   11.08.2008 10:05


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 21:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"