Tester le type d'une variable et trouver un ppcm
Bonjour :coucou:
J'essaie (non sans peine) de créer un petit prog tout simple qui trouve le ppcm (plus petit commun multiple) de 2 nombres. Voici la procédure lors du clic sur le boutton qui lance l'analyse (désolé si mon code fait bondir les experts, mais je débute) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| procedure TForm1.BtnPpcmClick(Sender: TObject);
Var//variables locales
Nombre1 : Integer;//stock le nombre de gauche
Nombre2 : Integer;//stock le nombre de droite
Compteur : Integer;//stock le multiplicateur
begin//début procédure
BtnReset.Enabled := True;//active le boutton reset
Nombre1 := StrToInt (EdtNombre1.Text);//prend la valeur de l'edit gauche
Nombre2 := StrToInt (EdtNombre2.Text);//prend la valeur de l'edit droit
Compteur := 0;//initialise le multiplicateur à 0
If ((Nombre1 > 0) And (Nombre2 > 0))//test des valeurs saisies
Then Begin
While (MNombre1.Lines <> MNombre2.Lines) Do//tant que le ppcm n'est pas trouvé
Begin
Inc(Compteur);//incrémente le compteur de 1
MNombre1.Lines.Add(IntToStr(Compteur)+ ' ' + 'x' +' ' + IntToStr(Nombre1) + ' ' +'=' + ' ' +IntToStr(Nombre1 * Compteur));
MNombre2.Lines.Add(IntToStr(Compteur)+ ' ' + 'x' +' ' + IntToStr(Nombre2) + ' ' +'=' + ' ' +IntToStr(Nombre2 * Compteur));
Windows.Beep(1500,1)//féquence, durée
End;//fin while
End
Else Begin
ShowMessage ('valeurs incorrectes');;
End;//fin du test de valeurs saisies
end;//fin procédure |
Voici l'allure sans prétentions de mon programme (comme vous le voyez c'est simplissime, mais déjà assez difficil pour moi :roll:)
http://img266.imageshack.us/img266/2135/ppcm.jpg
Je suis confronté à deux soucis :
Code:
If ((Nombre1 > 0) And (Nombre2 > 0))
Ce test vérifie donc si les valeurs saisies dans l'edit de gauche et dans celui de droite sont supérieurs à 0. Je voudrais plutôt tester si les valeurs saisies sont des Integer. J'avais pensé à une astuce du genre :
Code:
If ((Nombre1 In[0..9]) And (Nombre2 In[0..9]))
Mais je ne peut pas dépasser 9 et si je met une lettre ou un chiffre à virgule j'ai un message d'erreur générique et non pas le showmessage que j'ai céer pour informer l'utilisateur que les valeurs saisies sont incorrectes...
Le 2ème soucis est d'ordre logique :
Comment puis-je tester lorsque le ppcm est trouvé (lorsque le nombre1 et le nombre2 sont égaux, indépendament du moment où c'est le cas) ?
Mon test actuel est le suivant mais donne évidamment un while infinit :
Code:
While (MNombre1.Lines <> MNombre2.Lines) Do
Cette boucle est infinie car l'égalité n'existe jamais au même moment lorsqu'il s'agit de 2 nombres différents...
D'avance merci pour votre patience et vos explications "claires et concises" :ccool: