cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013 23 janv. 2006 à 09:01
Alors, a part le fait que le PGCD se calcul entre autre avec Euclide, et que cette formule, on l'apprend tous à l'école... Et que chaque année à la même periode, fleurissent ici ou sur d'autres site une quantité industrielle de calcul du PGCD, PPCM et autres racines d'une équation du seconde degrée, je commenterai quand même ta source.
1 - les deux procedure
procedure ENB2KeyPress(Sender: TObject; var Key: Char);
procedure ENB1KeyPress(Sender: TObject; var Key: Char);
Sont les mêmes... Tu en fais qu'une seule et dans l'inspecteur d'objets, tu fais pointer OnKeypress vers la première que tu as faite...
2 - dans la procedure BCalculerClick... Beaucoup de chose mais rien de bien utile...
Quand tu testes si les valeurs sont Ok, sorte tout de suite si elle sont pas bonnes... Ca évite des If...Then et la déclaration de variables Booléans...
Voir même, dans l'événement OnExit des TEdit, tu places un test :
If TEdit(sender).text='' then TEdit(sender).text:='0';
Comme ça, si rien c'est saisie, la valeur 0 et automatiquement mise.
En gros, ça donne ça :
procedure TForm1.BCalculerClick(Sender: TObject);
var
NB1, NB2, TMP: LONGINT;
begin
val(ENB1.Text,NB1,TMP);
val(ENB2.Text,NB2,TMP);
//Test pour savoir si le TEdit est remplie
if (NB1=0) or (NB2=0) then
begin
MessageBoxA(0,Pchar('Pas de PGCD pour 2 nombres nuls!'),Pchar('Attention...'),0 + MB_ICONEXCLAMATION + 0);
exit;
end;
//Le fameux algorithme d'Euclide
while not (NB2=0) do
begin
TMP:=NB1;
NB1:=NB2;
NB2:=TMP mod NB2;
end;
23 janv. 2006 à 09:01
1 - les deux procedure
procedure ENB2KeyPress(Sender: TObject; var Key: Char);
procedure ENB1KeyPress(Sender: TObject; var Key: Char);
Sont les mêmes... Tu en fais qu'une seule et dans l'inspecteur d'objets, tu fais pointer OnKeypress vers la première que tu as faite...
2 - dans la procedure BCalculerClick... Beaucoup de chose mais rien de bien utile...
Quand tu testes si les valeurs sont Ok, sorte tout de suite si elle sont pas bonnes... Ca évite des If...Then et la déclaration de variables Booléans...
Voir même, dans l'événement OnExit des TEdit, tu places un test :
If TEdit(sender).text='' then TEdit(sender).text:='0';
Comme ça, si rien c'est saisie, la valeur 0 et automatiquement mise.
En gros, ça donne ça :
procedure TForm1.BCalculerClick(Sender: TObject);
var
NB1, NB2, TMP: LONGINT;
begin
val(ENB1.Text,NB1,TMP);
val(ENB2.Text,NB2,TMP);
//Test pour savoir si le TEdit est remplie
if (NB1=0) or (NB2=0) then
begin
MessageBoxA(0,Pchar('Pas de PGCD pour 2 nombres nuls!'),Pchar('Attention...'),0 + MB_ICONEXCLAMATION + 0);
exit;
end;
//Le fameux algorithme d'Euclide
while not (NB2=0) do
begin
TMP:=NB1;
NB1:=NB2;
NB2:=TMP mod NB2;
end;
EPGCD.Text:= 'pgcd('+ENB1.Text+';'+ENB2.Text+')='+IntToStr(NB1) ;
end;
Bon, allez, j'arrête, je suis un peu tatillon...
Barbichette