Mise en forme canonique d' un polynome du second degree

Soyez le premier à donner votre avis sur cette source.

Vue 25 683 fois - Téléchargée 898 fois

Description

Ceci est un programme donnant la methode détaillé
concernant la mise en forme canonique d' un polynome du second degree.
Trés utile pour ceux qui ont des devoirs trés ennuyeux de maths,
ou bien pour ceux qui souhaitent verifier leurs résultats :p

Source / Exemple :


unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMan, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    XPManifest1: TXPManifest;
    E_A: TEdit;
    E_B: TEdit;
    E_C: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    function Sogne(Input : Extended) : Boolean ;
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var
 a,b,c,X ,Y ,resultat : extended ;
 Signe, Signe2, Signe3, Signe4, ValeurA, ValeurB, ValeurC : String ;
begin
  A := StrToFloat(E_A.Text) ;
  B := StrToFloat(E_B.Text) ;
  C := StrToFloat(E_C.Text) ;
  ValeurA := E_A.Text ;
  ValeurB := E_B.Text ;
  ValeurC := E_C.Text ;

  if A = 1 then
  begin

    X := b / 2 ;

    If B > 0 Then Signe := '+' else Signe := '-' ;
    If C > 0 Then Signe2 := '+' else Signe2 := '-' ;
    If C - X * X > 0 Then Signe3 := '+' else Signe3 := '-' ;
    If X > 0 Then Signe4 := '+' else Signe4 := '-' ;

    Memo1.Lines.Clear ;
    Memo1.Lines.Add('Soit le polynome :') ;
    Memo1.Lines.Add(ValeurA+'x² '+Signe+' '+FloatToStr(abs(B))+'x '+Signe2+' '+FloatToStr(abs(C))) ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('Et soit l'' égualité suivante :') ;
    Memo1.Lines.Add('a² + 2ab + b² = Ax² + Bx + C') ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('Calcule de b :') ;
    Memo1.Lines.Add('B = 2ab') ;
    Memo1.Lines.Add('b = B / 2a') ;
    Memo1.Lines.Add('a = 1 donc') ;
    Memo1.Lines.Add('b = B / 2') ;
    Memo1.Lines.Add('b = '+FloatToStr(b)+' / 2') ;
    Memo1.Lines.Add('b = '+FloatToStr(X)) ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('Calcule de C :') ;
    Memo1.Lines.Add('C = b² + (C - b²)') ;
    Memo1.Lines.Add(ValeurC+' = '+FloatToStr(X*X)+' + ('+ValeurC+' - '+FloatToStr(X*X)+')') ;
    Memo1.Lines.Add(ValeurC+' = '+FloatToStr(X*X)+' '+Signe3+' '+FloatToStr(abs(C - X * X))) ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('On remplace le C transformé :') ;
    Memo1.Lines.Add(ValeurA+'x² '+Signe+' '+FloatToStr(abs(B))+'x + '+FloatToStr(X*X)+' '+Signe3+' '+FloatToStr(abs(C - X * X))) ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('On factorise avec A² + 2ab + B² = ( a + b )² :') ;
    Memo1.Lines.Add('(x '+Signe4+' '+FloatToStr(Abs(X))+')² '+Signe3+' '+FloatToStr(abs(C - X * X))) ;

  end else begin

    X := B / A / 2 ;

    If B/A > 0 Then Signe := '+' else Signe := '-' ;
    If C/A > 0 Then Signe2 := '+' else Signe2 := '-' ;
    If C/A - X * X > 0 Then Signe3 := '+' else Signe3 := '-' ;
    If X > 0 Then Signe4 := '+' else Signe4 := '-' ;

    Memo1.Lines.Clear;
    Memo1.Lines.Add('Soit le polynome :') ;
    Memo1.Lines.Add(ValeurA+'x² '+Signe+' '+ValeurB+'x '+Signe2+' '+ValeurC) ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('On Factorise en divisant tout les membres par A :') ;
    Memo1.Lines.Add(ValeurA+' ( '+ValeurA+'x²/'+ValeurA+' '+Signe+' '+ValeurB+'x/2 '+Signe2+' '+ValeurC+'/2 )') ;
    Memo1.Lines.Add(ValeurA+' ( x² '+Signe+' '+FloatToStr(B/A)+'x '+Signe2+' '+FloatToStr(C/A)+' )') ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('Et soit l'' égualité suivante :') ;
    Memo1.Lines.Add('a² + 2ab + b² = Ax² + Bx + C') ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('Calcule de b :') ;
    Memo1.Lines.Add('B = 2ab') ;
    Memo1.Lines.Add('b = B / 2a') ;
    Memo1.Lines.Add('a = 1 donc') ;
    Memo1.Lines.Add('b = B / 2') ;
    Memo1.Lines.Add('b = '+FloatToStr(B/A)+' / 2') ;
    Memo1.Lines.Add('b = '+FloatToStr(X)) ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('Calcule de C :') ;
    Memo1.Lines.Add('C = b² + (C - b²)') ;
    Memo1.Lines.Add(FloatToStr(C/A)+' = '+FloatToStr(X*X)+' + ('+FloatToStr(C/A)+' - '+FloatToStr(X*X)+')') ;
    Memo1.Lines.Add(FloatToStr(C/A)+' = '+FloatToStr(X*X)+' '+Signe3+' '+FloatToStr(abs(C/A - X * X))) ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('On remplace le C transformé :') ;
    Memo1.Lines.Add(ValeurA+' ( x² '+Signe+' '+FloatToStr(B/A)+'x + '+FloatToStr(X*X)+' '+Signe3+' '+FloatToStr(abs(C/A - X * X))+' )') ;
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('On factorise avec A² + 2ab + B² = ( a + b )² :') ;
    Memo1.Lines.Add(ValeurA+' [( x '+Signe4+' '+FloatToStr(Abs(X))+' )²'+Signe3+' '+FloatToStr(abs(C/A - X * X))+' ]');
    Memo1.Lines.Add('') ;
    Memo1.Lines.Add('On effectue la multiplication') ;
    Memo1.Lines.Add(ValeurA+' ( x '+Signe4+' '+FloatToStr(Abs(X))+' )²'+Signe3+' '+FloatToStr(abs(C/A - X * X)*A));
  end;

end;

function TForm1.Sogne(Input : Extended) : Boolean ;
begin
if Input >= 0 then result := true else result := false ;
end;

end.

Conclusion :


Voila, c' est mon premier code posté ici. ^^
Ce n' est qu' une premiere version, donc si vous avez des remarques n' hésitez surtout pas :D

Je compte mettre a jour le code, et surtout ne me blamez pas si je code mal, je débute . . . ^__^

Codes Sources

A voir également

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.