Le programme suivant résout un système de deux équations à deux inconnus grâce à la méthode de substitution.
C'est un simple problème de mathématique que l'on peut facilement résoudre à la main, mais le code qui va avec est un bon entrainement.
Source / Exemple :
///////////////////////////////////////////////////////////
// Fichier : uSubstitution.pas //
// Auteur : Stéphane HAIMET //
// Date de création : 17/03/08 //
// Date de modification : 17/03/08 //
///////////////////////////////////////////////////////////
unit uSubstitution;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
eX1: TEdit;
eX2: TEdit;
eY2: TEdit;
eR2: TEdit;
Label3: TLabel;
eY1: TEdit;
Label4: TLabel;
eR1: TEdit;
Label5: TLabel;
Label6: TLabel;
bResoudre: TBitBtn;
bFermer: TBitBtn;
lResultat: TLabel;
procedure bResoudreClick(Sender: TObject);
procedure eX1Change(Sender: TObject);
procedure eY1Change(Sender: TObject);
procedure eR1Change(Sender: TObject);
procedure eX2Change(Sender: TObject);
procedure eY2Change(Sender: TObject);
procedure eR2Change(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//Quand on appuie sur le bouton 'résoudre'
procedure TForm1.bResoudreClick(Sender: TObject);
var x, y, x1, x2, y1, y2, r1, r2 : real;
begin
y1:=strtofloat(eY1.Text);
y2:=strtofloat(eY2.Text);
x1:=strtofloat(eX1.Text);
x2:=strtofloat(eX2.Text);
r1:=strtofloat(eR1.Text);
r2:=strtofloat(eR2.Text);
x:=0;
y:=0;
//1. On cherche la valeur de X par rapport à Y sur papier, on arrive à :
// x=(r1-y1*y)/x1
//Dans la deuxième équation on remplace x par ce qu'on a trouvé
// On simplifie ensuite pour trouver y, et on trouve :
y:=(x1*r2-x2*r1)/((-x2*y1)+(x1*y2));
// On remplace maintenant le y qu'on a trouvé dans la
// 1ère équation et on trouve la valeur de x :
x:=(r1-y1*y)/x1;
//On affiche le résultat :
lResultat.caption:='Solution : X = '+floattostr(x)+' et y = '+floattostr(y);
end;
//#####################################################################
// Les codes suivant font en sorte que le label resultat
// s'efface quand on change le contenu des edits, et met le
// bouton resoudre enabled quand les champs sont tous rempli
//######################################################################
procedure TForm1.eX1Change(Sender: TObject);
begin
lResultat.Caption:='';
if (eX1.text<>'') and (eX2.text<>'') and (eY1.text<>'') and
(eY2.text<>'') and (eR1.text<>'') and (eR2.text<>'') then
bResoudre.Enabled:=true
else
bResoudre.enabled:=false;
end;
procedure TForm1.eY1Change(Sender: TObject);
begin
lResultat.Caption:='';
if (eX1.text<>'') and (eX2.text<>'') and (eY1.text<>'') and
(eY2.text<>'') and (eR1.text<>'') and (eR2.text<>'') then
bResoudre.Enabled:=true
else
bResoudre.enabled:=false;
end;
procedure TForm1.eR1Change(Sender: TObject);
begin
lResultat.Caption:='';
if (eX1.text<>'') and (eX2.text<>'') and (eY1.text<>'') and
(eY2.text<>'') and (eR1.text<>'') and (eR2.text<>'') then
bResoudre.Enabled:=true
else
bResoudre.enabled:=false;
end;
procedure TForm1.eX2Change(Sender: TObject);
begin
lResultat.Caption:='';
if (eX1.text<>'') and (eX2.text<>'') and (eY1.text<>'') and
(eY2.text<>'') and (eR1.text<>'') and (eR2.text<>'') then
bResoudre.Enabled:=true
else
bResoudre.enabled:=false;
end;
procedure TForm1.eY2Change(Sender: TObject);
begin
lResultat.Caption:='';
if (eX1.text<>'') and (eX2.text<>'') and (eY1.text<>'') and
(eY2.text<>'') and (eR1.text<>'') and (eR2.text<>'') then
bResoudre.Enabled:=true
else
bResoudre.enabled:=false;
end;
procedure TForm1.eR2Change(Sender: TObject);
begin
lResultat.Caption:='';
if (eX1.text<>'') and (eX2.text<>'') and (eY1.text<>'') and
(eY2.text<>'') and (eR1.text<>'') and (eR2.text<>'') then
bResoudre.Enabled:=true
else
bResoudre.enabled:=false;
end;
end.
Conclusion :
Enjoy
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.