Bonjour
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) :
Voici l'allure sans prétentions de mon programme (comme vous le voyez c'est simplissime, mais déjà assez difficil pour moi )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je suis confronté à deux soucis :
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 : Sélectionner tout - Visualiser dans une fenêtre à part If ((Nombre1 > 0) And (Nombre2 > 0))
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part If ((Nombre1 In[0..9]) And (Nombre2 In[0..9]))
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 :
Cette boucle est infinie car l'égalité n'existe jamais au même moment lorsqu'il s'agit de 2 nombres différents...
Code : Sélectionner tout - Visualiser dans une fenêtre à part While (MNombre1.Lines <> MNombre2.Lines) Do
D'avance merci pour votre patience et vos explications "claires et concises"
Partager