Pgcd - algorithme d'euclide

Soyez le premier à donner votre avis sur cette source.

Vue 20 799 fois - Téléchargée 946 fois

Description

Bon voila je post pour la premiere fois sur ce site mon code source.
Je pense qu'il est assé simple mais bon...
Allez assé discuté se code ne sert a rien d'autre qu'a calculé le PGCD de deux nombre non nul (logique),
par l'algorithme d'Euclide.

Source / Exemple :


Tout dans le zip.
Compiler sans aucun probleme avec Delphi 2005 personel.

Conclusion :


Nesiter pas a me signalé les bug et me dire ce que j'ai oublier de faire ou de precisé pour ce preimier post.
Je pense l'avoir assé bien commenté pour les debutant!

Faite vos reclamation!!! d^_^b

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
220
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013

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;

EPGCD.Text:= 'pgcd('+ENB1.Text+';'+ENB2.Text+')='+IntToStr(NB1) ;
end;

Bon, allez, j'arrête, je suis un peu tatillon...

Barbichette

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.