Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ упаковка коробки

Автор: MiH@N 24.01.2008 1:39

помогите решить такую задачу: можно ли коробку размером a*b*c упаковать в посылку r*s*t ? Углом укладывать нельзя.

Автор: Pirate 24.01.2008 1:50

Цитата(MiH@N @ 23.01.2008 21:39) *

помогите решить такую задачу: можно ли коробку размером a*b*c упаковать в посылку r*s*t ? Углом укладывать нельзя.


Да - если коробка будет меньше посылки smile.gif
Подробнее опиши что за коробка и посылка и каким образом её класть

Автор: MiH@N 24.01.2008 1:53

размеры посылки и коробки вводить с клавы.усё..больше условий нет. nea.gif
(я так понимаю её можно вертеть полюбому.)

Автор: Pirate 24.01.2008 1:59

Так падайдёт:

X:=StrToint(Edit1.Text)*StrToint(Edit2.Text)*StrToint(Edit3.Text);
Y:=StrToint(Edit4.Text)*StrToint(Edit5.Text)*StrToint(Edit6.Text);

if x<y then
ShowMessage('Коробка помещается')
else
ShowMessage('Коробка помещается')


Автор: MiH@N 24.01.2008 2:23

не. я тож об этом варианте думал. (образно :у коробки от конфет <у коробки от обуви но эт не значит что коробка конфет поместится в коробку от обуви) no1.gif

я тут коечто наклепал но с глюками (как изменить?):

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,r,s,t : real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=StrToFloat(Edit3.Text);
r:=StrToFloat(Edit4.Text);
s:=StrToFloat(Edit5.Text);
t:=StrToFloat(Edit6.Text);
if a>r or a>s or a>t or b>r or b>s or b>t or c>r or c>s or c>t <---ошибка тута
then edit7.Text:='непоместица'
else edit7.Text:='поместица';
end;


Автор: Pirate 24.01.2008 2:34


Помойму всё!
if (a>r) or (a>s) or (a>t) or (b>r) or (b>s) or (b>t) or (c>r) or (c>s) or (c>t)

Автор: MiH@N 24.01.2008 2:40

всмысле всё? вродеж скобки необязательны..хотя ща попробую..

Автор: andriano 24.01.2008 2:43

1. Отсортировать размеры коробки и посылки, примерно так:
if a < b then swap(a,b);
if b < c then swap(b,c);
if a < b then swap(a,b);
2. Сравнить соответсьвующие размеры, т.е.
if (a<r) and (b<s) and (c<t) then...
3. Надо писать либо "Не поместится" либо "нипаместицца".

Автор: MiH@N 24.01.2008 2:44

действительно всё.спс. good.gif стоп...не всё...решение неправ-но.

Добавлено через 2 мин.
а что значит "if a < b then swap(a,b);"--эта строка??


Автор: andriano 24.01.2008 12:56

Цитата(MiH@N @ 23.01.2008 22:44) *
а что значит "if a < b then swap(a,b);"--эта строка??
Очевидно: "Если a меньше b, то поменять местами значения a и b".
Например, так:
procedure swap(var a,b:float);
var tmp : float;
begin
tmp := a;
a := b;
b := tmp;
end;

Автор: hardcase 25.01.2008 4:05

Тогда уж скорее так:

Код
procedure swap(vara,b:float);
var tmp : float;
begin
  tmp := a;
  a := b;
  b := tmp;
end;

Автор: feniks25 26.01.2008 18:13

Цитата(Pirate @ 23.01.2008 21:34) *

if (a>r) or (a>s) or (a>t) or (b>r) or (b>s) or (b>t) or (c>r) or (c>s) or (c>t)


Эта идея была правильной, только оформлена не хорошо.
А если попробовать так:
( (a>r) and (b>s) and (c>t) ) or () or ()