unit UnitZakupki; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) Label_D: TLabeledEdit; Label_h: TLabeledEdit; Label_K: TLabeledEdit; Label_L: TLabeledEdit; Label_c1: TLabeledEdit; Label_c2: TLabeledEdit; Label_q: TLabeledEdit; Button_OK: TBitBtn; LabeledEdit1: TLabeledEdit; LabeledEdit2: TLabeledEdit; Memo1: TMemo; procedure Button_OKClick(Sender: TObject); procedure LabeledEdit2Change(Sender: TObject); procedure LabeledEdit1Change(Sender: TObject); procedure LabeledEdit1KeyPress(Sender: TObject; var Key: Char); procedure LabeledEdit2KeyPress(Sender: TObject; var Key: Char); procedure Label_hKeyPress(Sender: TObject; var Key: Char); procedure Label_KKeyPress(Sender: TObject; var Key: Char); procedure Label_LKeyPress(Sender: TObject; var Key: Char); procedure Label_c1KeyPress(Sender: TObject; var Key: Char); procedure Label_c2KeyPress(Sender: TObject; var Key: Char); procedure Label_qKeyPress(Sender: TObject; var Key: Char); private Function Nahodin_ym:real; Function Nahodim_TCU1:real; Function Nahodim_Q:real; Function Nahodim_y_iskomoe:real; Function Volium_vozobnovlenie:real; Function Kogda_vozobnovlenie:real; Function Zona:string; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button_OKClick(Sender: TObject); begin Memo1.Lines.Clear; Memo1.Lines.Add('Автомобильная мастерская специализируется на быстрой замене масла в автомобилях.'); Memo1.Lines.Add('Мастерская покупает масло в большом количестве по '+Label_c1.Text +' доллара за литр.'); Memo1.Lines.Add('Цена может быть снижена до ' +Label_c2.Text+ ' долларов за литр при условии, что мастерская покупает более '+Label_q.Text+' литров.'); Memo1.Lines.Add('За день в мастерской обслуживается около '+LabeledEdit2.Text+' автомобилей, и на каждый из них для замены требуется '+LabeledEdit1.Text+' л масла.'); Memo1.Lines.Add('Мастерская хранит на складе большие объёмы масла, что обходится в '+Label_h.Text+' доллара в день за 1 литр.'); Memo1.Lines.Add('Стоимость размещения заказа на большой объём масла равна '+Label_K.Text+' долларов.'); Memo1.Lines.Add('Срок выполнения заказа - '+Label_L.Text+' дня.'); Memo1.Lines.Add('Требуется определить оптимальную стратегию управления запасами.'); Memo1.Lines.Add(''); Memo1.Lines.Add('ОТВЕТ'); Memo1.Lines.Add('q попадает в следующую зону - '+Zona); Memo1.Lines.Add('Необходимо заказывать '+FloatToStr(Nahodim_y_iskomoe)+' л. масла,'); Memo1.Lines.Add('когда уровень запаса понижается до '+FloatToStr(Volium_vozobnovlenie)+' л.'); Memo1.Lines.Add('Таким образом, необходимо заказывать масло, через '+FloatToStr(Kogda_vozobnovlenie)+' суток'); end; function TForm1.Volium_vozobnovlenie: real; begin Result:=StrToFloat(Label_D.Text)*StrToFloat(Label_L.Text); end; function TForm1.Zona: string; var q:real; begin q:=StrToFloat(Label_q.Text); if (q>=0) and (q=Nahodin_ym) and (q'' then begin x1:=StrToFloat(LabeledEdit1.Text); x2:=StrToFloat(LabeledEdit2.Text); Label_D.Text:=FloatToStr(x1*x2) end; end; procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08, ',']) then Key:=#0 end; procedure TForm1.LabeledEdit2Change(Sender: TObject); var x1,x2:real; begin if LabeledEdit2.Text<>'' then begin x1:=StrToFloat(LabeledEdit1.Text); x2:=StrToFloat(LabeledEdit2.Text); Label_D.Text:=FloatToStr(x1*x2) end; end; procedure TForm1.LabeledEdit2KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08]) then Key:=#0 end; procedure TForm1.Label_c1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08, ',']) then Key:=#0 end; procedure TForm1.Label_c2KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08, ',']) then Key:=#0 end; procedure TForm1.Label_hKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08, ',']) then Key:=#0 end; procedure TForm1.Label_KKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08, ',']) then Key:=#0 end; procedure TForm1.Label_LKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08, ',']) then Key:=#0 end; procedure TForm1.Label_qKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #08, ',']) then Key:=#0 end; function TForm1.Nahodim_Q: real; var Q1,Q2,Diskr:real; a,b,c:real; begin a:=1; b:=(2*(StrToFloat(Label_c2.Text)*StrToFloat(Label_D.Text)-Nahodim_TCU1))/StrToFloat(Label_h.Text); c:=(2*StrToFloat(Label_K.Text)*StrToFloat(Label_D.Text))/StrToFloat(Label_h.Text); Diskr:=Sqr(b)-4*a*c; Q1:=(-b+Sqrt(Diskr))/(2*a); Q2:=(-b-Sqrt(Diskr))/(2*a); if Q1>Nahodin_ym then Result:=Q1 else Result:=Q2; end; function TForm1.Nahodim_TCU1: real; begin Result:=StrToFloat(Label_c1.Text)*StrToFloat(Label_D.Text)+((StrToFloat(Label_K.Text)*StrToFloat(Label_D.Text))/Nahodin_ym)+((StrToFloat(Label_h.Text)*Nahodin_ym)/2) end; function TForm1.Nahodim_y_iskomoe: real; var q:real; begin q:=StrToFloat(Label_q.Text); if (q>=0) and (q=Nahodin_ym) and (q