Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Interface. uses SysUtils,Classes;
uses SysUtils,Classes; Type TMyEvent= procedure (Sender:TObject;OldP,OldQ:longint) of Object;
TDrob= class Private fName: string; fp,fq:longint; fOnChange:TNotifyEvent; fOnZero:TMyEvent; procedure SetP(NewP:longint); procedure SetQ(NewQ:longint);
Public constructor Create(aName: string); procedure Swap; procedure Add(a:TDrob); function Info: string; function GetValue:real; procedure SetValue(NewValue:real); procedure SetPQ(NewP,NewQ:longint); property Name: string read fName write fName; property Value:real read GetValue write SetValue; property p:longint read fp write SetP; property q:longint read fq write SetQ; property OnChange:TNotifyEvent read fOnChange write fOnChange; property OnZero:TMyEvent read fOnZero write fOnZero; end; Implementation procedure TDrob.SetPQ(NewP, NewQ: longint); var pp,qq: longint; Begin if (NewP<>p) or (NewQ<>q) then Begin pp:=p; qq:=q; if NewQ<>0 Then begin fp:=NewP; fq:=NewQ; Normalization; end Else begin fp:=NewP; fq:=1; if assigned(fOnZero) then OnZero(Self,pp,qq) end; if assigned(fOnChange) then OnChange(Self); end; end;
constructor TDrob.Create; Begin inherited Create; Name:=aName; SetPQ(1,1); end;
function TDrob.Info: string; Begin Result:='Дробь '+Name+'= '+ IntToStr (p)+'/'+ IntToStr (q)+'='+ FloatToStrF (Value,ffFixed,9,5); end;
procedure TDrob.Swap; Begin SetPQ(q,p); end;
procedure TDrob.Add(a: TDrob); Begin SetPQ(p*a.q+q*a.p,q*a.q); end;
procedure TDrob.SetP(NewP:longint); Begin SetPQ(NewP,q); end;
procedure TDrob.SetQ(NewQ: longint); Begin SetPQ(p,NewQ); end;
function TDrob.GetValue: real; Begin Result:=p/q; end;
procedure TDrob.SetValue(NewValue: real); Begin SetPQ(round(NewValue*10000),10000); end; end. Delphi – дегі демонстрациялық бағдарлама – Drobs модульі қосылады: Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, – екі бөлшекке тағайындалған айнымалылар сипатталынады: Var Form1: TForm1; a,b: TDrob; – пішінге келесі объектілер орналастырылады:
– үш процедура қосылады – бөлшектерді өңдеу үшін:
procedure TForm1.AChange(Sender: TObject); Begin GroupBox1.Caption:=a.Name; Edit1.Text:= IntToStr (a.p); Edit2.Text:= IntToStr (a.q); Edit3.Text:= FloatToStrF (a.Value,ffFixed,9,5); end;
procedure TForm1.BChange(Sender: TObject); Begin GroupBox2.Caption:=b.Name; Edit4.Text:= IntToStr (b.p); Edit5.Text:= IntToStr (b.q); Edit6.Text:= FloatToStrF (b.Value,ffFixed,9,5); end;
procedure TForm1.ZeroEvent(Sender: TObject; Begin with sender as TDrob do if MessageDlg ('Дробь '+Name+ end; – бөлшектерді басқаруға арналған көрнекілік құрауыштардың өңдеу - процедуралары қосылып жазылады:
a:=TDrob.Create('a'); a.OnChange:=AChange; a.OnChange(a); a.OnZero:=ZeroEvent; b:=TDrob.Create('b'); b.OnChange:=BChange; b.OnChange(b); b.OnZero:=ZeroEvent;
var st: string; Begin with Sender as TEdit do Begin st:=text; if Key='-' Date: 2015-07-01; view: 585; Нарушение авторских прав |