unit Lsolution5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit5: TEdit; Edit6: TEdit; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Edit4: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; Edit13: TEdit; Edit14: TEdit; Edit15: TEdit; Edit16: TEdit; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Label13: TLabel; procedure Button1Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Edit3KeyPress(Sender: TObject; var Key: Char); procedure Edit4KeyPress(Sender: TObject; var Key: Char); procedure Edit5KeyPress(Sender: TObject; var Key: Char); procedure Edit6KeyPress(Sender: TObject; var Key: Char); procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Edit4Change(Sender: TObject); procedure Edit5Change(Sender: TObject); procedure Edit6Change(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation procedure Sqr2(a, b, c: real; var Re1,Im1,Re2,Im2: real); begin if (b*b-4*a*c>0) or (b*b-4*a*c=0) then begin Re1:= (-b+Sqrt(b*b-4*a*c))/(2*a); Im1:= 0; Re2:= (-b-Sqrt(b*b-4*a*c))/(2*a); Im2:= 0; end else begin Re1:= -b/2/a; Im1:= Sqrt(4*a*c-b*b)/(2*a); Re2:= -b/2/a; Im2:= -Sqrt(4*a*c-b*b)/(2*a); end; end; procedure Kardano3(A, B, C, D: real; var S, Re1, Im1, Re2, Im2, Re3, Im3: real); var p, q: real; {коэффициенты кубического уравнения y^3+p*y+q=0, x=y-B/(3*A)} F: real; y1: real; {y1=(-q/2+Sqrt(q*q/4+p*p*p/27))^(1/3)} y2: real; {y2=(-q/2-Sqrt(q*q/4+p*p*p/27))^(1/3)} begin p := (3*A*C-B*B)/(3*A*A); q := (2*B*B*B-9*A*B*C+27*A*A*D)/(27*A*A*A); S := (4*(3*A*C-B*B)*(3*A*C-B*B)*(3*A*C-B*B) +(2*B*B*B-9*A*B*C+27*A*A*D)*(2*B*B*B-9*A*B*C+27*A*A*D)) /(2916*A*A*A*A*A*A); y1:= 0; y2:= 0; F:= 0; if S<0 then begin if q<0 then F:= Arctan(-2*Sqrt(-S)/q); if q>0 then F:= Arctan(-2*Sqrt(-S)/q)+Pi; if q=0 then F:= Pi/2; Re1:= 2*Sqrt(-p/3)*Cos(F/3)-B/(3*A); Im1:= 0; Re2:= 2*Sqrt(-p/3)*Cos((F+2*Pi)/3)-B/(3*A); Im2:= 0; Re3:= 2*Sqrt(-p/3)*Cos((F+4*Pi)/3)-B/(3*A); Im3:= 0; if q=0 then Re3:= -B/(3*A); end; if S>0 then begin if -q/2+Sqrt(S)>0 then y1:= exp(ln(abs(-q/2+Sqrt(S)))/3); if -q/2+Sqrt(S)<0 then y1:= -exp(ln(abs(-q/2+Sqrt(S)))/3); if -q/2+Sqrt(S)=0 then y1:= 0; if -q/2-Sqrt(S)>0 then y2:= exp(ln(abs(-q/2-Sqrt(S)))/3); if -q/2-Sqrt(S)<0 then y2:= -exp(ln(abs(-q/2-Sqrt(S)))/3); if -q/2-Sqrt(S)=0 then y2:= 0; Re1:= y1+y2-B/A/3; Im1:= 0; Re2:= -(y1+y2)/2-B/A/3; Im2:= (y1-y2)*Sqrt(3)/2; Re3:= -(y1+y2)/2-B/A/3; Im3:= -(y1-y2)*Sqrt(3)/2; end; if S=0 then begin if q<0 then y1:= exp(ln(abs(-q/2))/3); if q>0 then y1:= -exp(ln(abs(-q/2))/3); if q=0 then y1:= 0; Re1:= 2*y1-B/A/3; Im1:= 0; Re2:= -y1-B/A/3; Im2:= 0; Re3:= -y1-B/A/3; Im3:= 0; end; end; Procedure BiSQR4(A,B,C,D,E: real; var Re1,Im1,Re2,Im2,Re3,Im3,Re4,Im4:real); var p, r: real; F: real; begin F:=0; p:= (8*A*C-3*B*B)/(8*A*A); r:= (16*A*B*B*C-64*A*A*B*D-3*B*B*B*B+256*A*A*A*E)/(256*A*A*A*A); if ((p*p-4*r)>0) or ((p*p-4*r)=0) then begin if ((-p+Sqrt(p*p-4*r))>0) or ((-p+Sqrt(p*p-4*r))=0) then begin Re1:= Sqrt((-p+Sqrt(p*p-4*r))/2)-B/(4*A); Im1:= 0; Re2:= -Sqrt((-p+Sqrt(p*p-4*r))/2)-B/(4*A); Im2:= 0; end else begin Re1:= -B/(4*A); Im1:= Sqrt((p-Sqrt(p*p-4*r))/2); Re2:= -B/(4*A); Im2:= -Sqrt((p-Sqrt(p*p-4*r))/2); end; if ((-p-Sqrt(p*p-4*r))>0) or ((-p-Sqrt(p*p-4*r))=0) then begin Re3:= Sqrt((-p-Sqrt(p*p-4*r))/2)-B/(4*A); Im3:= 0; Re4:= -Sqrt((-p-Sqrt(p*p-4*r))/2)-B/(4*A); Im4:= 0; end else begin Re3:= -B/(4*A); Im3:= Sqrt((p+Sqrt(p*p-4*r))/2); Re4:= -B/(4*A); Im4:= -Sqrt((p+Sqrt(p*p-4*r))/2); end; end; if p*p-4*r<0 then begin if p<0 then F:= Arctan(-Sqrt(4*r-p*p)/p); if p>0 then F:= Arctan(-Sqrt(4*r-p*p)/p)+Pi; if p=0 then F:= Pi/2; Re1:= Sqrt(Sqrt(r))*Cos(F/2)-B/(4*A); Im1:= Sqrt(Sqrt(r))*Sin(F/2); Re2:= Sqrt(Sqrt(r))*Cos(F/2)-B/(4*A); Im2:= -Sqrt(Sqrt(r))*Sin(F/2); Re3:= -Sqrt(Sqrt(r))*Cos(F/2)-B/(4*A); Im3:= Sqrt(Sqrt(r))*Sin(F/2); Re4:= -Sqrt(Sqrt(r))*Cos(F/2)-B/(4*A); Im4:= -Sqrt(Sqrt(r))*Sin(F/2); end; end; Procedure Ferrary4(A,B,C,D,E: real; var Re1,Im1,Re2,Im2,Re3,Im3,Re4,Im4:real; var Ex: boolean); var p, q, r: real; A0, B0, C0, D0, S0: real; z1, z2, z3, h1, h2, h3: real; D1, D2: real; begin Ex:= false; p:= (8*A*C-3*B*B)/(8*A*A); q:= (8*A*A*D+B*B*B-4*A*B*C)/(8*A*A*A); r:= (16*A*B*B*C-64*A*A*B*D-3*B*B*B*B+256*A*A*A*E)/(256*A*A*A*A); A0:= 1; B0:= p; C0:= (p*p-4*r)/4; D0:= -q*q/8; Kardano3(A0, B0, C0, D0, S0, z1, h1, z2, h2, z3, h3); {предполагается, что z1 всегда больше нуля, если q не равно нулю} if (z1=0) or (z1<0) then begin Ex:=True; Exit; end; D1:= 2*z1-4*(p/2+z1+q/2/Sqrt(2*z1)); D2:= 2*z1-4*(p/2+z1-q/2/Sqrt(2*z1)); if (D1>0) or (D1=0) then begin Re1:= (Sqrt(2*z1)+Sqrt(D1))/2-B/(4*A); Im1:= 0; Re2:= (Sqrt(2*z1)-Sqrt(D1))/2-B/(4*A); Im2:= 0; end else begin Re1:= Sqrt(2*z1)/2-B/(4*A); Im1:= Sqrt(-D1)/2; Re2:= Sqrt(2*z1)/2-B/(4*A); Im2:= -Sqrt(-D1)/2; end; if (D2>0) or (D2=0) then begin Re3:= (-Sqrt(2*z1)+Sqrt(D2))/2-B/(4*A); Im3:= 0; Re4:= (-Sqrt(2*z1)-Sqrt(D2))/2-B/(4*A); Im4:= 0; end else begin Re3:= -Sqrt(2*z1)/2-B/(4*A); Im3:= Sqrt(-D2)/2; Re4:= -Sqrt(2*z1)/2-B/(4*A); Im4:= -Sqrt(-D2)/2; end; end; procedure Solution5(K1, K2, K3, K4, K5, K6: real; var x5, A, B, C, D, E: real); const DX=0.000000000000001;{погрешность вычисления} var M,Z1,Z2,Z0:real; I,N:integer; Tr: boolean; {Не найдено точное значение} function Y(X:real):real; begin Y:=K1*X*X*X*X*X+K2*X*X*X*X+K3*X*X*X+K4*X*X+K5*X+K6; end; begin M:=1; x5:=0; Tr:=True; if Y(-M)*Y(+M)>0 then repeat M:=M*2; until Y(-M)*Y(+M)<=0; if Y(-M)=0 then begin x5:=-M; Tr:=false; end; if Y(M)=0 then begin x5:=M; Tr:=false; end; if Y(-M)*Y(+M)<0 then begin Z1:=-M; Z2:=M; N:=Round(Ln(2*M/DX)/Ln(2)); for I:=1 to N do begin Z0:=(Z1+Z2)/2; if Y(Z1)*Y(Z0)<0 then Z2:=Z0; if Y(Z1)*Y(Z0)>0 then Z1:=Z0; if Y(z0)=0 then begin x5:=Z0; Tr:=false; end; end; if Tr then x5:=(Z1+Z2)/2; end; A:=k1; B:=k1*x5+k2; C:=k1*x5*x5+k2*x5+k3; D:=k1*x5*x5*x5+k2*x5*x5+k3*x5+k4; E:=k1*x5*x5*x5*x5+k2*x5*x5*x5+k3*x5*x5+k4*x5+k5; end; Procedure Solution4(A,B,C,D,E: real; var Bi:boolean); var Re1, Im1, Re2, Im2, Re3, Im3, Re4, Im4: real; Ex: boolean; u1, v1, u2, v2, u3, v3, u4, v4: real; begin Bi:=False; if (8*A*A*D+B*B*B-4*A*B*C)/(8*A*A*A)=0 then BiSqr4(A, B, C, D, E, Re1, Im1, Re2, Im2, Re3, Im3, Re4, Im4) else Ferrary4(A, B, C, D, E, Re1, Im1, Re2, Im2, Re3, Im3, Re4, Im4, Ex); if Ex then BiSqr4(A, B, C, D, E, Re1, Im1, Re2, Im2, Re3, Im3, Re4, Im4); if ((8*A*A*D+B*B*B-4*A*B*C)/(8*A*A*A)=0) or (Ex) then Bi:=True; if Im1=0 then Form1.Edit7.Text:=FloatToStr(Re1) else Form1.Edit7.Text:=FloatToStr(Re1)+' +i* '+FloatToStr(Im1); if Im2=0 then Form1.Edit8.Text:=FloatToStr(Re2) else Form1.Edit8.Text:=FloatToStr(Re2)+' +i* '+FloatToStr(Im2); if Im3=0 then Form1.Edit9.Text:=FloatToStr(Re3) else Form1.Edit9.Text:=FloatToStr(Re3)+' +i* '+FloatToStr(Im3); if Im4=0 then Form1.Edit10.Text:=FloatToStr(Re4) else Form1.Edit10.Text:=FloatToStr(Re4)+' +i* '+FloatToStr(Im4); Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:='x3 = '; Form1.Label11.Caption:='x4 = '; u1:=A*(Re1*Re1*Re1*Re1-6*Re1*Re1*Im1*Im1+Im1*Im1*Im1*Im1)+ B*(Re1*Re1*Re1-3*Re1*Im1*Im1)+C*(Re1*Re1-Im1*Im1)+D*Re1+E; v1:=4*A*(Re1*Re1*Re1*Im1-Re1*Im1*Im1*Im1)+B*(3*Re1*Re1*Im1-Im1*Im1*Im1)+ 2*C*Re1*Im1+D*Im1; u2:=A*(Re2*Re2*Re2*Re2-6*Re2*Re2*Im2*Im2+Im2*Im2*Im2*Im2)+ B*(Re2*Re2*Re2-3*Re2*Im2*Im2)+C*(Re2*Re2-Im2*Im2)+D*Re2+E; v2:=4*A*(Re2*Re2*Re2*Im2-Re2*Im2*Im2*Im2)+B*(3*Re2*Re2*Im2-Im2*Im2*Im2)+ 2*C*Re2*Im2+D*Im2; u3:=A*(Re3*Re3*Re3*Re3-6*Re3*Re3*Im3*Im3+Im3*Im3*Im3*Im3)+ B*(Re3*Re3*Re3-3*Re3*Im3*Im3)+C*(Re3*Re3-Im3*Im3)+D*Re3+E; v3:=4*A*(Re3*Re3*Re3*Im3-Re3*Im3*Im3*Im3)+B*(3*Re3*Re3*Im3-Im3*Im3*Im3)+ 2*C*Re3*Im3+D*Im3; u4:=A*(Re4*Re4*Re4*Re4-6*Re4*Re4*Im4*Im4+Im4*Im4*Im4*Im4)+ B*(Re4*Re4*Re4-3*Re4*Im4*Im4)+C*(Re4*Re4-Im4*Im4)+D*Re4+E; v4:=4*A*(Re4*Re4*Re4*Im4-Re4*Im4*Im4*Im4)+B*(3*Re4*Re4*Im4-Im4*Im4*Im4)+ 2*C*Re4*Im4+D*Im4; Form1.Edit12.Text:='Для x1: ' +FloatToStr(u1)+' + i * '+FloatToStr(v1); Form1.Edit13.Text:='Для x2: ' +FloatToStr(u2)+' + i * '+FloatToStr(v2); Form1.Edit14.Text:='Для x3: ' +FloatToStr(u3)+' + i * '+FloatToStr(v3); Form1.Edit15.Text:='Для x4: ' +FloatToStr(u4)+' + i * '+FloatToStr(v4); Exit; end; Procedure Def; var A, B, C, D, E, F: real; A4, B4, C4, D4, E4: real; S0 : real; Re1, Im1, Re2, Im2, Re3, Im3, x5: real; u1, u2, u3, v1, v2, v3, u5: real; Bi: boolean; begin if (Form1.Edit1.Text='') or (Form1.Edit1.Text='-') then begin ShowMessage('Введите коэффициент A'); Form1.Edit1.SetFocus; Exit; end; if (Form1.Edit2.Text='') or (Form1.Edit2.Text='-') then begin ShowMessage('Введите коэффициент B'); Form1.Edit2.SetFocus; Exit; end; if (Form1.Edit3.Text='') or (Form1.Edit3.Text='-') then begin ShowMessage('Введите коэффициент С'); Form1.Edit3.SetFocus; Exit; end; if (Form1.Edit4.Text='') or (Form1.Edit4.Text='-') then begin ShowMessage('Введите коэффициент D'); Form1.Edit4.SetFocus; Exit; end; if (Form1.Edit5.Text='') or (Form1.Edit5.Text='-') then begin ShowMessage('Введите коэффициент E'); Form1.Edit5.SetFocus; Exit; end; A:=StrToFloat(Form1.Edit1.Text); B:=StrToFloat(Form1.Edit2.Text); C:=StrToFloat(Form1.Edit3.Text); D:=StrToFloat(Form1.Edit4.Text); E:=StrToFloat(Form1.Edit5.Text); F:=StrToFloat(Form1.Edit6.Text); if (A=0) and (B=0) and (C=0) and (D=0) and (E=0) then begin if F=0 then Form1.Edit7.Text:='Любое число является решением уравнения' else Form1.Edit7.Text:='Данное уравнение не имеет решений'; Form1.Label8.Caption:=''; Form1.Label9.Caption:=''; Form1.Label10.Caption:=''; Form1.Label11.Caption:=''; Form1.Label12.Caption:=''; Exit; end; if (A=0) and (B=0) and (C=0) and (D=0) then begin Re1:=-F/E; Form1.Edit7.Text:=FloatToStr(Re1); Form1.Label1.Caption:='Решение линейного уравнения:'; Form1.Label8.Caption:=' x = '; Form1.Label9.Caption:=''; Form1.Label10.Caption:=''; Form1.Label11.Caption:=''; Form1.Label12.Caption:=''; Exit; end; if (A=0) and (B=0) and (C=0) then begin Sqr2(D, E, F, Re1, Im1, Re2, Im2); if (Im1=0) then Form1.Edit7.Text:=FloatToStr(Re1) else Form1.Edit7.Text:=FloatToStr(Re1)+' +i* '+FloatToStr(Im1); if (Im2=0) then Form1.Edit8.Text:=FloatToStr(Re1) else Form1.Edit8.Text:=FloatToStr(Re1)+' +i* '+FloatToStr(Im2); Form1.Label1.Caption:='Решение квадратного уравнения D*x^2+E*x+F=0'; Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:=''; Form1.Label11.Caption:=''; Form1.Label12.Caption:=''; u1:=D*(Re1*Re1-Im1*Im1)+E*Re1+F; v1:=2*D*Re1*Im1+E*Im1; u2:=D*(Re2*Re2-Im2*Im2)+E*Re2+F; v2:=2*D*Re2*Im2+E*Im2; Form1.Edit12.Text:='Для x1: ' +FloatToStr(u1)+' + i * '+FloatToStr(v1); Form1.Edit13.Text:='Для x2: ' +FloatToStr(u2)+' + i * '+FloatToStr(v2); Exit; end; if (A=0) and (B=0) then begin Kardano3(C, D, E, F, S0, Re1, Im1, Re2, Im2, Re3, Im3); Form1.Edit7.Text:=FloatToStr(Re1); if Im2=0 then Form1.Edit8.Text:=FloatToStr(Re2) else Form1.Edit8.Text:=FloatToStr(Re2)+' +i* '+FloatToStr(Im2); if Im3=0 then Form1.Edit9.Text:=FloatToStr(Re3) else Form1.Edit9.Text:=FloatToStr(Re3)+' +i* '+FloatToStr(Im3); Form1.Label1.Caption:= 'Решение кубического уравнения C*x^3+D*x^2+E*x+F=0'; Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:='x3 = '; Form1.Label11.Caption:=''; Form1.Label12.Caption:=''; u1:=C*(Re1*Re1*Re1-3*Re1*Im1*Im1)+D*(Re1*Re1-Im1*Im1)+E*Re1+F; v1:=C*(3*Re1*Re1*Im1-Im1*Im1*Im1)+2*D*Re1*Im1+E*Im1; u2:=C*(Re2*Re2*Re2-3*Re2*Im2*Im2)+D*(Re2*Re2-Im2*Im2)+E*Re2+F; v2:=C*(3*Re2*Re2*Im2-Im2*Im2*Im2)+2*D*Re2*Im2+E*Im2; u3:=C*(Re3*Re3*Re3-3*Re3*Im3*Im3)+D*(Re3*Re3-Im3*Im3)+E*Re3+F; v3:=C*(3*Re3*Re3*Im3-Im3*Im3*Im3)+2*D*Re3*Im3+E*Im3; Form1.Edit12.Text:='Для x1: ' +FloatToStr(u1)+' + i * '+FloatToStr(v1); Form1.Edit13.Text:='Для x2: ' +FloatToStr(u2)+' + i * '+FloatToStr(v2); Form1.Edit14.Text:='Для x3: ' +FloatToStr(u3)+' + i * '+FloatToStr(v3); Exit; end; if A=0 then begin Solution4(B, C, D, E, F, Bi); Form1.Label1.Caption:='Решение уравнения B*x^4+C*x^3+D*x^2+E*x+F=0'; if Bi then Form1.Label1.Caption:='Решение биквадратного уравнения'; Exit; end; Solution5(A, B, C, D, E, F, x5, A4, B4, C4, D4, E4); Solution4(A4, B4, C4, D4, E4, Bi); Form1.Label1.Caption:='Решение уравнения A*x^5+B*x^4+C*x^3+D*x^2+E*x+F=0'; Form1.Label1.Caption:='Решение уравнения A*x^5+B*x^4+C*x^3+D*x^2+E*x+F=0'; Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:='x3 = '; Form1.Label11.Caption:='x4 = '; Form1.Label12.Caption:='x5 = '; Form1.Edit11.Text:=FloatToStr(x5); u5:=A*x5*x5*x5*x5*x5+B*x5*x5*x5*x5+C*x5*x5*x5+D*x5*x5+E*x5+F; Form1.Edit16.Text:='Для x5: '+FloatToStr(u5); end; procedure IntoMathcad(st1: string; var st2:string); var i: byte; begin for i:=1 to length(st1) do begin if st1[i]=',' then st1[i]:='.'; if (st1[i-1]=' ') and (st1[i]='i') then st1[i-1]:='1'; end; while(pos(' ',st1)>0) do delete(st1,pos(' ',st1),1); st2:=st1; end; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Def; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case Key of #8, '0'..'9': ; #13: Edit2.SetFocus; '.',',': begin if Key <> DecimalSeparator then Key:=DecimalSeparator; if Pos(DecimalSeparator, Edit1.Text)<>0 then Key := Chr(0); end; '-': if Length(Edit1.Text) <> 0 then Key := Chr(0); else Key:=Chr(0); end; end; procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin case Key of #8, '0'..'9': ; #13: Edit3.SetFocus; '.',',': begin if Key <> DecimalSeparator then Key:=DecimalSeparator; if Pos(DecimalSeparator, Edit2.Text)<>0 then Key := Chr(0); end; '-': if Length(Edit2.Text) <> 0 then Key := Chr(0); else Key:=Chr(0); end; end; procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char); begin case Key of #8, '0'..'9': ; #13: Edit4.SetFocus; '.',',': begin if Key <> DecimalSeparator then Key:=DecimalSeparator; if Pos(DecimalSeparator, Edit3.Text)<>0 then Key := Chr(0); end; '-': if Length(Edit3.Text) <> 0 then Key := Chr(0); else Key:=Chr(0); end; end; procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char); begin case Key of #8, '0'..'9': ; #13: Edit5.SetFocus; '.',',': begin if Key <> DecimalSeparator then Key:=DecimalSeparator; if Pos(DecimalSeparator, Edit4.Text)<>0 then Key := Chr(0); end; '-': if Length(Edit4.Text) <> 0 then Key := Chr(0); else Key:=Chr(0); end; end; procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char); begin case Key of #8, '0'..'9': ; #13: Edit6.SetFocus; '.',',': begin if Key <> DecimalSeparator then Key:=DecimalSeparator; if Pos(DecimalSeparator, Edit5.Text)<>0 then Key := Chr(0); end; '-': if Length(Edit5.Text) <> 0 then Key := Chr(0); else Key:=Chr(0); end; end; procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char); begin case Key of #8, '0'..'9': ; #13: Def; '.',',': begin if Key <> DecimalSeparator then Key:=DecimalSeparator; if Pos(DecimalSeparator, Edit6.Text)<>0 then Key := Chr(0); end; '-': if Length(Edit6.Text) <> 0 then Key := Chr(0); else Key:=Chr(0); end; end; procedure TForm1.Edit1Change(Sender: TObject); begin Edit7.Text:=''; Edit8.Text:=''; Edit9.Text:=''; Edit10.Text:=''; Edit11.Text:=''; Edit12.Text:=''; Edit13.Text:=''; Edit14.Text:=''; Edit15.Text:=''; Edit16.Text:=''; Edit12.Visible:=False; Edit13.Visible:=False; Edit14.Visible:=False; Edit15.Visible:=False; Edit16.Visible:=False; end; procedure TForm1.Edit2Change(Sender: TObject); begin Edit7.Text:=''; Edit8.Text:=''; Edit9.Text:=''; Edit10.Text:=''; Edit11.Text:=''; Edit12.Text:=''; Edit13.Text:=''; Edit14.Text:=''; Edit15.Text:=''; Edit16.Text:=''; Edit12.Visible:=False; Edit13.Visible:=False; Edit14.Visible:=False; Edit15.Visible:=False; Edit16.Visible:=False; end; procedure TForm1.Edit3Change(Sender: TObject); begin Edit7.Text:=''; Edit8.Text:=''; Edit9.Text:=''; Edit10.Text:=''; Edit11.Text:=''; Edit12.Text:=''; Edit13.Text:=''; Edit14.Text:=''; Edit15.Text:=''; Edit16.Text:=''; Edit12.Visible:=False; Edit13.Visible:=False; Edit14.Visible:=False; Edit15.Visible:=False; Edit16.Visible:=False; end; procedure TForm1.Edit4Change(Sender: TObject); begin Edit7.Text:=''; Edit8.Text:=''; Edit9.Text:=''; Edit10.Text:=''; Edit11.Text:=''; Edit12.Text:=''; Edit13.Text:=''; Edit14.Text:=''; Edit15.Text:=''; Edit16.Text:=''; Edit12.Visible:=False; Edit13.Visible:=False; Edit14.Visible:=False; Edit15.Visible:=False; Edit16.Visible:=False; end; procedure TForm1.Edit5Change(Sender: TObject); begin Edit7.Text:=''; Edit8.Text:=''; Edit9.Text:=''; Edit10.Text:=''; Edit11.Text:=''; Edit12.Text:=''; Edit13.Text:=''; Edit14.Text:=''; Edit15.Text:=''; Edit16.Text:=''; Edit12.Visible:=False; Edit13.Visible:=False; Edit14.Visible:=False; Edit15.Visible:=False; Edit16.Visible:=False; end; procedure TForm1.Edit6Change(Sender: TObject); begin Edit7.Text:=''; Edit8.Text:=''; Edit9.Text:=''; Edit10.Text:=''; Edit11.Text:=''; Edit12.Text:=''; Edit13.Text:=''; Edit14.Text:=''; Edit15.Text:=''; Edit16.Text:=''; Edit12.Visible:=False; Edit13.Visible:=False; Edit14.Visible:=False; Edit15.Visible:=False; Edit16.Visible:=False; end; procedure TForm1.FormActivate(Sender: TObject); begin Edit1.Text:='1'; Edit2.SetFocus; Edit12.Visible:=False; Edit13.Visible:=False; Edit14.Visible:=False; Edit15.Visible:=False; Edit16.Visible:=False; Label1.Caption:='Решение уравнения A*x^5+B*x^4+C*x^3+D*x^2+E*x+F=0'; end; procedure TForm1.Button4Click(Sender: TObject); begin Edit12.Visible:=True; Edit13.Visible:=True; Edit14.Visible:=True; Edit15.Visible:=True; Edit16.Visible:=True; end; procedure TForm1.Button5Click(Sender: TObject); begin Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Edit6.Text:=''; Edit1.SetFocus; Label1.Caption:='Решение уравнения A*x^5+B*x^4+C*x^3+D*x^2+E*x+F=0'; Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:='x3 = '; Form1.Label11.Caption:='x4 = '; Form1.Label12.Caption:='x5 = '; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:='0'; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Edit6.Text:=''; Edit2.SetFocus; Label1.Caption:='Решение уравнения B*x^4+C*x^3+D*x^2+E*x+F=0'; Form1.Label8.Caption:=''; Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:='x3 = '; Form1.Label11.Caption:='x4 = '; Form1.Label12.Caption:=''; end; procedure TForm1.Button3Click(Sender: TObject); begin Edit1.Text:='0'; Edit2.Text:='0'; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Edit6.Text:=''; Edit3.SetFocus; Label1.Caption:='Решение кубического уравнения C*x^3+D*x^2+E*x+F=0'; Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:='x3 = '; Form1.Label11.Caption:=''; Form1.Label12.Caption:=''; end; procedure TForm1.Button6Click(Sender: TObject); begin Edit1.Text:='0'; Edit2.Text:='0'; Edit3.Text:='0'; Edit4.Text:=''; Edit5.Text:=''; Edit6.Text:=''; Edit4.SetFocus; Label1.Caption:='Решение квадратного уравнения D*x^2+E*x+F=0'; Form1.Label8.Caption:='x1 = '; Form1.Label9.Caption:='x2 = '; Form1.Label10.Caption:=''; Form1.Label11.Caption:=''; Form1.Label12.Caption:=''; end; procedure TForm1.Button7Click(Sender: TObject); var mst1, mst2, mst3, mst4, mst5 :string; begin IntoMathcad(Edit7.Text, mst1); Edit7.Text:=mst1; IntoMathcad(Edit8.Text, mst2); Edit8.Text:=mst2; IntoMathcad(Edit9.Text, mst3); Edit9.Text:=mst3; IntoMathcad(Edit10.Text, mst4); Edit10.Text:=mst4; IntoMathcad(Edit11.Text, mst5); Edit11.Text:=mst5; end; end.