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

> Дверь и шкаф, "Горе от ума"(С)
sheka
сообщение 13.09.2010 17:37
Сообщение #1


Я.
****

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

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


Вопрос: возможно ли пронести шкаф a*b*c через дверь p*q?
Мое решение:
write ( min(a,min(b,c)) < min(p,q))  and  (a+b+c-min(a,min(b,c))-max(a,max(b,c)) < max(p,q) );

Можно как-то оптимизировать? Учитывая, что паскаль я вижу впервые, и что я функции, по идее, знать не должен программа растягивается до некультурной длины.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
sheka
сообщение 13.09.2010 21:40
Сообщение #2


Я.
****

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

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


Готово. Чуть позже постараюсь выложить объяснения.
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,p,q:real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
c:=strtofloat(edit3.Text);
if a<b then
begin
p:=a;
if c<b then q:=c
else q:=b;
end
else
begin
p:=b;
if c<a then q:=c
else q:=a;
end;
if p>q then begin a:=p; b:=q; end
else begin a:=q; b:=p; end;

p:=strtofloat(edit4.Text);
q:=strtofloat(edit5.Text);
if p>q then begin c:=p; p:=q; q:=c; end;

if a>q then
if p>= sqrt(a*a+b*b)*sin(arctan(2*a*b/(a*a-b*b))+arctan(sqrt(a*a+b*b-q*q)/q)) then
button1.Caption:='Can'
else button1.Caption:='Can''t'
else
if (b<=p) then button1.Caption:='Can'
else button1.Caption:='Can''t';
end;


Сообщение отредактировано: sheka - 14.09.2010 1:55
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
sheka   Дверь и шкаф   13.09.2010 17:37
sheka   маленький упс.. там же можно еще и в плоскостях шк...   13.09.2010 19:12
Unconnected   Для протаскивания шкафа нужно, чтобы 2 из 3х его п...   13.09.2010 19:46
sheka   Готово. Чуть позже постараюсь выложить объяснения....   13.09.2010 21:40
Lapp   Ребят, раздел - Алгоритмы! Программа - не ест...   14.09.2010 2:20
TarasBer   > sqrt(a*a+b*b)*sin(arctan(2*a*b/(a*a-b*b))+arc...   14.09.2010 11:51
sheka   TarasBer, там же, как ты сам и говорил, сумма аркт...   14.09.2010 22:11
TarasBer   А, второй арктангенс под синусом. Понял. Тогда так...   15.09.2010 11:37
TarasBer   После симметризации условие принимает вид такой: (...   15.09.2010 15:50
sheka   alpha := arctan(sqrt(a*a+b*b-q*q)/q); ...   20.09.2010 0:53
sheka   Вот никак не могу понять, откуда из вот этого бере...   20.09.2010 20:57
TarasBer   Переносим 2*a*b*q налево, возводим в квадрат. Пото...   23.09.2010 18:17
sheka   TarasBer, что это за умное слово "симметризац...   27.09.2010 1:07
TarasBer   Нет такого термина, это я для наглядности сказал. ...   27.09.2010 17:30


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

 



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