0/5 (4 avis)
Vue 11 768 fois - Téléchargée 468 fois
//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
23 août 2005 à 08:34
procedure TfmTrinome.donnee1KeyPress(Sender: TObject; var Key: Char);
begin
// SEULE LES CHIFFRES 0 à 9 et les caractères ,.-
// #8 POUR POUVOIR EFFACER
// decimalseparator LE S2PARATEUR DECIMAL DU SYSTEME
if pos(key,'0123456789,.-'#8+decimalseparator )=0 then key :=#0;
// CELON LA FRAPPE DE . ou , c'est decimalseparator qui est pris en compte
if pos(key, ',.') <>0 then key := decimalseparator;
// LE decimalseparator n'est accepté qu'une seule fois
if (key=decimalseparator ) and ( pos(decimalseparator, donnee1.Text) <> 0 ) then key :=#0;
// LE SIGNE - n'est accepté qu'au début
if ( donnee1.SelStart<>0) and (key='-') then key :=#0;
end;
remarque
les quantités à calculer sont
signe(Delta)
-b /(2a)
sqrt( abs(Delta) ) /(2a)
suivant le signe de delta on ajoute ou non ...
23 août 2005 à 00:35
22 août 2005 à 17:17
La résolution avec delta négatif se fait en séparant les parties réelles et imaginaires.
en untilisant une tabl[0..1 , 0..1] il est possible de ranger les solutions telque:
La partie réelle est mise dans une table[0,0] et table[1,0] et la partie imaginaire dans le table[0,1]et table[1,1] . Table[0,1] contient la racine carré de la valeur absolue. comme il y a 2 racines imaginaires l'une est positive l'autre négative,Table[1,1]=-Table[0,1].
si delta est positif ou nul alors la partie imaginaire est nule d'ou Table[1,1]=-Table[0,1]= 0. et les solutions sont dans Table[0,0] et Table[1,0].
est-ce claire ...
Il existe des programmes avec des nombres complexe..somme multiplication ... pour cela on utilise des vecteurs ou tables ou alors des variants
Voir des exmples sur le site DELPHI
en modifiant légérement la formule de " CptPingu "
on a
-> (-b /(2a) + i*Rac( |Delta| ) ) /(2a)
-> (-b /(2a) - i*Rac( |Delta| ) ) /(2a)
Pour visualiser les solutions alors on visualise la partie réelle puis imaginaire.
Bon courage
Pour info x^4 + a.x^3 + b.x^2 + c.x + d =0
a des solutions avec des racines carré et cubique.
pour x^5 et plus alors c'est autre chose
21 août 2005 à 22:01
2_Tu ne met pas les fichiers suivants: .~dfm, .dof, .~pas, .cfg
3_Pas besoin de copier tout ton code dans la fenetre source. Tu ne colle que le principe que tu veu illustrer
4_Pour resoudre un polynome négatif: Delta<0 2 solution:
Soit: ax²+bx+c
Les solutions sont:
-> (-b-(i*Rac(-Delta)))/(2a)
-> (-b+(i*Rac(-Delta)))/(2a)
Avec I=Rac(-1)
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.