[VB.NET] probleme avec PGCD

Fermé
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 - 10 avril 2008 à 18:35
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 - 11 avril 2008 à 18:33
Bonjour,
Pour apprendre à programmer j'ai tenté de faire un programme pour calculer le PGCD de deux nombre. Seulement il y a un petit bug, lors de l'appui sur le boutton de confirmation, j'ai comme résultat 0. lors d'un second appui, je trouve le PGCD correct. voici le programme
Bonjour,
Je suis en train d'apprendre à programmer, j'ai, en ligne trouvé des cours d'algoritmie qui m'ont permi d'arriver à déduire un alogoritme, puis une programmation visual basic (je travail sur visual basic 2008 express.Net)
Seulement, petit problème : j'ai créé un boutton, et lors de l'appui sur ce boutton, le calcul se fait : résultat 0, je rapui résultat : le véritable PGCD des deux nombres.




création d'un boutton nommé button1
de deux textbox nommées textbox1 et 2
de deux labels "nombre1", "nombre2" et "PGCD des deux nombres"
Public Class Form1
Dim nombre1 As Integer
Dim nombre2 As Integer
Dim reste As Integer

Dim PGCD As Integer
Dim Resultat As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


End Sub

Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If TextBox1.Text = "" Then
nombre1 = 0
Else
nombre1 = TextBox1.Text
End If



End Sub

Private Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
If TextBox2.Text = "" Then
nombre2 = 0
Else
nombre2 = TextBox2.Text
End If



End Sub

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click




If nombre1 = 0 And nombre2 > 0 Then
PGCD = nombre2
End If


If nombre2 = 0 And nombre1 > 0 Then

PGCD = nombre1

End If


If (nombre1 And nombre2 > 0) And (nombre1 > nombre2) Then

PGCD = 1

While Not PGCD = 0

PGCD = nombre1 Mod nombre2

nombre1 = nombre2
nombre2 = PGCD

PGCD = PGCD

End While

ElseIf (nombre1 And nombre2 > 0) And (nombre1 < nombre2) Then

PGCD = 1

While PGCD > 0

PGCD = nombre2 Mod nombre1
nombre2 = nombre1
nombre1 = PGCD
PGCD = PGCD

End While

End If
Label3.Text = PGCD
End Sub
End Class

1 réponse

made in 44 Messages postés 25 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 24 août 2009
10 avril 2008 à 21:22
salut,désolé artagis malgré que je suis un etudiant en première année informatique à ALGER mais je n'ai aucune formation en vb je te conseille seulement de simplifier ton programme je peut te donner la sollution en pascal :


program PGCD;
var i,j:integer;
begin
writeln ('veuillez entrer deux nombres entier afinn de calculer leur PGCD ');
readln(a,b);
j:=0;
while (a mod i<>0) and (b mod i<>0) do
begin
i:=a-j;
j:=j+1;
end;
writeln ('le PGCD de ',a,' et ',b,'est',i);
end.

A+
0
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146
11 avril 2008 à 09:28
la solution ne fonctionne pas : tentative de division par 0 lors des arguments de la boucle en effet i n'a pas de valeur et par défaut prend 0
0
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146 > artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010
11 avril 2008 à 18:33
up... j'ai vraiment un prblème c'est dommage
0