Trinome du second degres

Description

Ce petit programme resoud les trinomes du second degré. Le code est peu commenté car je pense que les noms des composants sont assez éloquents et que les procédures sont assez courtes.

Source / Exemple :


//projet

program Trinome;

uses
  Forms,
  trinomprinc in 'trinomprinc.pas' {fmTrinome};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TfmTrinome, fmTrinome);
  Application.Run;
end.

//unité

unit trinomprinc;

interface

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

type
  TfmTrinome = class(TForm)
    lbresult: TListBox;
    donnee1: TEdit;
    donnee2: TEdit;
    donnee3: TEdit;
    txIntro: TLabel;
    txOp1: TLabel;
    txOp2: TLabel;
    txOp3: TLabel;
    btresoud: TButton;
    btefface: TButton;
    bteftout: TButton;
    MainMenu1: TMainMenu;
    Fichier1: TMenuItem;
    Fermer1: TMenuItem;
    Edition1: TMenuItem;
    Copierdonnees1: TMenuItem;
    Copierresultats1: TMenuItem;
    PopupMenu1: TPopupMenu;
    Copier1: TMenuItem;
    Coller1: TMenuItem;
    Couper1: TMenuItem;
    txResult: TLabel;
    PopupMenu2: TPopupMenu;
    PopupMenu3: TPopupMenu;
    Copier2: TMenuItem;
    Coller2: TMenuItem;
    Couper2: TMenuItem;
    N1: TMenuItem;
    Couperdonnes1: TMenuItem;
    Couperrsultats1: TMenuItem;
    Copier3: TMenuItem;
    Coller3: TMenuItem;
    Couper3: TMenuItem;
    Aide1: TMenuItem;
    Lenombrei1: TMenuItem;
    Aproposde1: TMenuItem;
    procedure Fermer1Click(Sender: TObject);
    procedure Copierdonnees1Click(Sender: TObject);
    procedure Aproposde1Click(Sender: TObject);
    procedure Copierresultats1Click(Sender: TObject);
    procedure bteffaceClick(Sender: TObject);
    procedure Copier1Click(Sender: TObject);
    procedure Coller1Click(Sender: TObject);
    procedure Couper1Click(Sender: TObject);
    procedure bteftoutClick(Sender: TObject);
    procedure btresoudClick(Sender: TObject);
    procedure Couperdonnes1Click(Sender: TObject);
    procedure Couperrsultats1Click(Sender: TObject);
    procedure Copier2Click(Sender: TObject);
    procedure Copier3Click(Sender: TObject);
    procedure Couper2Click(Sender: TObject);
    procedure Couper3Click(Sender: TObject);
    procedure Coller2Click(Sender: TObject);
    procedure Coller3Click(Sender: TObject);
    procedure Lenombrei1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  fmTrinome: TfmTrinome;

implementation

{$R *.dfm}

procedure TfmTrinome.Fermer1Click(Sender: TObject);
begin
Close;
end;

procedure TfmTrinome.Copierdonnees1Click(Sender: TObject);
begin
Clipboard.AsText :=
           txOp1.Caption + FloatToStr(StrToFloat(Donnee1.Text)) + txOp2.Caption + FloatToStr(StrToFloat(Donnee2.Text)) + txOp3.Caption + FloatToStr(StrToFloat(Donnee3.Text)) + TxResult.Caption;
end;

procedure TfmTrinome.Aproposde1Click(Sender: TObject);
begin
ShowMessage('par Aurelien Martin le 20/08/05');
end;

procedure TfmTrinome.Copierresultats1Click(Sender: TObject);
begin
Clipboard.AsText := lbResult.Items.Text;
end;

procedure TfmTrinome.bteffaceClick(Sender: TObject);
begin
Donnee1.Clear;
Donnee2.Clear;
Donnee3.Clear;
end;

procedure TfmTrinome.Copier1Click(Sender: TObject);
begin
Clipboard.AsText := Donnee1.SelText;
end;

procedure TfmTrinome.Coller1Click(Sender: TObject);
begin
Donnee1.Text := Donnee1.Text + Clipboard.Astext;
end;

procedure TfmTrinome.Couper1Click(Sender: TObject);
begin
Clipboard.AsText := Donnee1.SelText;
Donnee1.ClearSelection
end;

procedure TfmTrinome.bteftoutClick(Sender: TObject);
begin
Donnee1.Clear;
Donnee2.Clear;
Donnee3.Clear;
lbresult.Items.Clear;
end;

procedure TfmTrinome.btresoudClick(Sender: TObject); //Cette procédure fait tout
var
Delta: Currency;
begin
if StrToFloat(Donnee1.Text) = 0 then
  begin
  lbResult.Items.Add('Premiere donnée nulle');
  lbResult.Items.Add('Ce trinome n''est pas du second degé.');
  lbResult.Items.Add('****************************************************************************');
  end
else
begin
  Delta := StrToFloat(Donnee2.Text) * StrToFloat(Donnee2.Text) - 4 * StrToFloat(Donnee1.Text) * StrToFloat(Donnee3.Text);
  lbResult.Items.Add('Delta = (' + FloatToStr(StrToFloat(Donnee2.Text)) + ')² - 4 * ' + FloatToStr(StrToFloat(Donnee1.Text)) + ' * ' + FloatToStr(StrToFloat(Donnee3.Text)));
  lbResult.Items.Add('Delta = ' + FloatToStr(Delta));
  if Delta < 0 then
    begin
      lbResult.Items.Add('Delta négatif');
      lbResult.Items.Add('Aucun nombre réel solution du trinome');
      lbResult.Items.Add('X =(' + FloatToStr(-1 * StrToFloat(Donnee2.Text))+ '-V' + FloatToStr(Delta) + ')/(2*' + FloatToStr(StrToFloat(Donnee1.Text)) + ')');
      lbResult.Items.Add('X =' + FloatToStr(-1 * StrToFloat(Donnee2.Text)/(2 * StrToFloat(Donnee1.Text))) + ' - ' + FloatToStr(sqrt(-1 * Delta) / 2 * StrToFloat(Donnee1.Text)) + 'i');
      lbResult.Items.Add('ou');
      lbResult.Items.Add('X =(' + FloatToStr(-1 * StrToFloat(Donnee2.Text))+ '+V' + FloatToStr(Delta) + ')/(2*' + FloatToStr(StrToFloat(Donnee1.Text)) + ')');
      lbResult.Items.Add('X =' + FloatToStr(-1 * StrToFloat(Donnee2.Text)/(2 * StrToFloat(Donnee1.Text))) + ' + ' + FloatToStr(sqrt(-1 * Delta) / (2 * StrToFloat(Donnee1.Text))) + 'i');
      lbResult.Items.Add('****************************************************************************');
      end
  else if Delta = 0 then
    begin
      lbResult.Items.Add('Delta nul');
      lbResult.Items.Add('Une Solution');
      lbResult.Items.Add('X=(' + FloatToStr(-1 * StrToFloat(Donnee2.Text)) + ')/ (2*' + Donnee1.Text + ')');
      lbResult.Items.Add('X=' + FloatToStr(-1 *  StrToFloat(Donnee2.Text) / (2 * StrToFloat(Donnee1.Text))));
      lbResult.Items.Add('****************************************************************************');
    end
  else
    begin
      lbResult.Items.Add('Delta positif');
      lbResult.Items.Add('Deux solutions');
      lbResult.Items.Add('X=(' + FloatToStr(-1 * StrToFloat(Donnee2.Text))+ '-V' + FloatToStr(Delta) + ')/ (2*' + FloatToStr(StrToFloat(Donnee1.Text)) + ')');
      lbResult.Items.Add('X=' + FloatToStr((-1 *  StrToFloat(Donnee2.Text) - sqrt(Delta)) / (2 * StrToFloat(Donnee1.Text))));
      lbResult.Items.Add('ou');
      lbResult.Items.Add('X=(' + FloatToStr(-1 * StrToFloat(Donnee2.Text))+ '+V' + FloatToStr(Delta) + ')/ (2*' + FloatToStr(StrToFloat(Donnee1.Text)) + ')');
      lbResult.Items.Add('X=' + FloatToStr((-1 *  StrToFloat(Donnee2.Text) + sqrt(Delta)) / (2 * StrToFloat(Donnee1.Text))));
      lbResult.Items.Add('****************************************************************************');
    end;
  end;

end;

procedure TfmTrinome.Couperdonnes1Click(Sender: TObject);
begin
Clipboard.AsText :=
           txOp1.Caption + FloatToStr(StrToFloat(Donnee1.Text)) + txOp2.Caption + FloatToStr(StrToFloat(Donnee2.Text)) + txOp3.Caption + FloatToStr(StrToFloat(Donnee3.Text)) + TxResult.Caption;
Donnee1.Clear;
Donnee2.Clear;
Donnee3.Clear;
end;

procedure TfmTrinome.Couperrsultats1Click(Sender: TObject);
begin
Clipboard.AsText := lbResult.Items.Text;
lbResult.Items.Clear;
end;

procedure TfmTrinome.Copier2Click(Sender: TObject);
begin
Clipboard.AsText := Donnee2.SelText;
end;

procedure TfmTrinome.Copier3Click(Sender: TObject);
begin
Clipboard.AsText := Donnee3.SelText;
end;

procedure TfmTrinome.Couper2Click(Sender: TObject);
begin
Clipboard.AsText := Donnee2.SelText;
Donnee2.ClearSelection
end;

procedure TfmTrinome.Couper3Click(Sender: TObject);
begin
Clipboard.AsText := Donnee3.SelText;
Donnee3.ClearSelection
end;

procedure TfmTrinome.Coller2Click(Sender: TObject);
begin
Donnee2.Text := Donnee2.Text + Clipboard.Astext;
end;

procedure TfmTrinome.Coller3Click(Sender: TObject);
begin
Donnee3.Text := Donnee3.Text + Clipboard.Astext;
end;

procedure TfmTrinome.Lenombrei1Click(Sender: TObject);
var
Nbri: TStringList;
begin
Nbri := TStringList.Create;
Nbri.Add('**********************************************************');
Nbri.Add('Le nombre i est un nombre de substitution');
Nbri.Add('Il n''est pas réel et remplace la racine carrée de -1');
Nbri.Add('C''est à dire que la racine carrée d''un nombre négatif');
Nbri.Add('est égale à la racine carrée de la distance à 0 de ce');
Nbri.Add('nombre multipliée par i.');
Nbri.Add('Ce n''est pas un nombre réel -> c''est un nombre complexe');
Nbri.Add('**********************************************************');
ShowMessage(Nbri.Text);
Nbri.Destroy;
end;

end.
//fiche

object fmTrinome: TfmTrinome
  Left = 237
  Top = 218
  Width = 486
  Height = 360
  HorzScrollBar.ParentColor = False
  Caption = 'Trinomes du second degré'
  Color = clWindowText
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  Menu = MainMenu1
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object txIntro: TLabel
    Left = 8
    Top = 16
    Width = 447
    Height = 29
    Align = alCustom
    Caption = 'Dans un trinôme du second degré tel que '
    Font.Charset = DEFAULT_CHARSET
    Font.Color = cl3DLight
    Font.Height = -24
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
  end
  object txOp1: TLabel
    Left = 0
    Top = 64
    Width = 57
    Height = 29
    Caption = 'P(x)='
    Font.Charset = DEFAULT_CHARSET
    Font.Color = cl3DLight
    Font.Height = -24
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
  end
  object txOp2: TLabel
    Left = 168
    Top = 64
    Width = 38
    Height = 29
    Caption = 'X²+'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = cl3DLight
    Font.Height = -24
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
  end
  object txOp3: TLabel
    Left = 312
    Top = 64
    Width = 31
    Height = 29
    Caption = 'X+'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = cl3DLight
    Font.Height = -24
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
  end
  object txResult: TLabel
    Left = 448
    Top = 64
    Width = 27
    Height = 29
    Caption = '=0'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = cl3DLight
    Font.Height = -24
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
  end
  object lbresult: TListBox
    Left = 0
    Top = 162
    Width = 478
    Height = 143
    Align = alBottom
    Color = clBlack
    Font.Charset = DEFAULT_CHARSET
    Font.Color = cl3DLight
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ItemHeight = 13
    MultiSelect = True
    ParentFont = False
    TabOrder = 0
  end
  object donnee1: TEdit
    Left = 64
    Top = 72
    Width = 97
    Height = 21
    Color = clInfoText
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
    PopupMenu = PopupMenu1
    TabOrder = 1
  end
  object donnee2: TEdit
    Left = 208
    Top = 72
    Width = 97
    Height = 21
    Color = clWindowText
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
    PopupMenu = PopupMenu2
    TabOrder = 2
  end
  object donnee3: TEdit
    Left = 344
    Top = 72
    Width = 97
    Height = 21
    Color = clWindowText
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
    PopupMenu = PopupMenu3
    TabOrder = 3
  end
  object btresoud: TButton
    Left = 16
    Top = 112
    Width = 121
    Height = 25
    Caption = 'Resoudre'
    Default = True
    TabOrder = 4
    OnClick = btresoudClick
  end
  object btefface: TButton
    Left = 160
    Top = 112
    Width = 129
    Height = 25
    Caption = 'Effacer données'
    TabOrder = 5
    OnClick = bteffaceClick
  end
  object bteftout: TButton
    Left = 312
    Top = 112
    Width = 129
    Height = 25
    Caption = 'Effacer Tout'
    TabOrder = 6
    OnClick = bteftoutClick
  end
  object MainMenu1: TMainMenu
    object Fichier1: TMenuItem
      Caption = 'Fichier'
      object Fermer1: TMenuItem
        Caption = 'Fermer'
        OnClick = Fermer1Click
      end
    end
    object Edition1: TMenuItem
      Caption = 'Edition'
      object Copierdonnees1: TMenuItem
        Caption = 'Copier données'
        OnClick = Copierdonnees1Click
      end
      object Copierresultats1: TMenuItem
        Caption = 'Copier résultats'
        OnClick = Copierresultats1Click
      end
      object N1: TMenuItem
        Caption = '-'
      end
      object Couperdonnes1: TMenuItem
        Caption = 'Couper données'
        OnClick = Couperdonnes1Click
      end
      object Couperrsultats1: TMenuItem
        Caption = 'Couper résultats'
        OnClick = Couperrsultats1Click
      end
    end
    object Aide1: TMenuItem
      Caption = 'Aide'
      object Lenombrei1: TMenuItem
        Caption = 'Le nombre i'
        OnClick = Lenombrei1Click
      end
      object Aproposde1: TMenuItem
        Caption = 'A propos de'
        OnClick = Aproposde1Click
      end
    end
  end
  object PopupMenu1: TPopupMenu
    object Copier1: TMenuItem
      Caption = 'Copier'
      OnClick = Copier1Click
    end
    object Coller1: TMenuItem
      Caption = 'Coller'
      OnClick = Coller1Click
    end
    object Couper1: TMenuItem
      Caption = 'Couper'
      OnClick = Couper1Click
    end
  end
  object PopupMenu2: TPopupMenu
    object Copier2: TMenuItem
      Caption = 'Copier'
      OnClick = Copier2Click
    end
    object Coller2: TMenuItem
      Caption = 'Coller'
      OnClick = Coller2Click
    end
    object Couper2: TMenuItem
      Caption = 'Couper'
      OnClick = Couper2Click
    end
  end
  object PopupMenu3: TPopupMenu
    object Copier3: TMenuItem
      Caption = 'Copier'
      OnClick = Copier3Click
    end
    object Coller3: TMenuItem
      Caption = 'Coller'
      OnClick = Coller3Click
    end
    object Couper3: TMenuItem
      Caption = 'Couper'
      OnClick = Couper3Click
    end
  end
end

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.