Meilleur auteur de réponses
aidez moi svp probleme en code...

Question
-
bonjour, les membres
j'ai un petit probleme concerne un programme en vb moi j'itilise vb 2010
vous trouvez tous les infos sur mon probleme su ce video :
http://www.youtube.com/watch?v=P-bfxLmL8Xk
aidez moi s.v.p j'attend vos solutions et vos commentaires avec impatience .
avec mon respect grandiose
kiet-ken
Réponses
-
Bonjour kiet-kan,
Il est tout à fait normal que le résultat soit 0 car :
Vous déclarez les variables a, b, c étant de type Object sans aucune valeur. Et suite à ça vous utilisez ces variables pour créer delta. Toutes les variables étant globales. a, b, c sont donc nuls et delta et nul dès le lancement du programme et ne changera pas.
Delta ne change pas automatiquement de valeur en changeant les variables a, b et c. Il faut lui réassigner la valeur. De plus il est conseillé d'utiliser le type Integer à la place de Object qui (chez moi en tout cas) ne pose aucun problème.
C'est exactement la même chose pour x, x1 et x2 qui vaudront 0 dès le début et ne seront pas changé explicitement. De plus on peut choisir le type Double pour éviter les arrondis.
Enfin, les tests avec If ne sont pas corrects car en mettant If delta >= 0 Then et ensuite ElseIf delta = 0 cette deuxième condition est incluse dans la première. D'où l'affichage de x1 et x2 pour delta nul.
Voilà le code commenté avec quelques ajouts :
Imports System.Math 'librairie qui peut servir pour ce genre de programme Public Class Form1 Dim a As Integer Dim b As Integer Dim c As Integer Dim delta As Integer Dim x1 As Double 'type double pour plus de précision Dim x2 As Double Dim x As Double Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If IsNumeric(TextBox1.Text) Then 'Vérifie que l'utilisateur tape un nombre et évite bien des erreurs a = TextBox1.Text End If End Sub Private Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged If IsNumeric(TextBox2.Text) Then b = TextBox2.Text End If End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged If IsNumeric(TextBox3.Text) Then c = TextBox3.Text End If End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged If IsNumeric(TextBox4.Text) Then TextBox4.Text = delta 'inutile car on calcule automatiquement delta End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click delta = (b ^ 2) - (4 * a * c) 'ici delta prendra une valeur TextBox4.Text = delta 'affichage du delta correct If delta > 0 Then 'seulement si supérieur à 0 x1 = (-b + (Math.Sqrt(delta))) / 2 * a 'exemple avec Math.Sqrt qui équivaut delta^1/2 x2 = (-b - (delta ^ (1 / 2))) / 2 * a MsgBox("x1 : " & x1.ToString & vbNewLine & "x2 : " & x2.ToString) ElseIf delta = 0 Then x = (-b / 2 * a) 'ici x prendra une valeur MsgBox("x : " & x.ToString) ElseIf delta < 0 Then MsgBox("Pas de solutions") End If End Sub End Class
Bonne journée.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact- Proposé comme réponse Gabriel MongeonModerator jeudi 7 juillet 2011 19:12
- Marqué comme réponse Ciprian Duduiala mercredi 13 juillet 2011 05:44
Toutes les réponses
-
-
Bonjour kiet-kan,
Il est tout à fait normal que le résultat soit 0 car :
Vous déclarez les variables a, b, c étant de type Object sans aucune valeur. Et suite à ça vous utilisez ces variables pour créer delta. Toutes les variables étant globales. a, b, c sont donc nuls et delta et nul dès le lancement du programme et ne changera pas.
Delta ne change pas automatiquement de valeur en changeant les variables a, b et c. Il faut lui réassigner la valeur. De plus il est conseillé d'utiliser le type Integer à la place de Object qui (chez moi en tout cas) ne pose aucun problème.
C'est exactement la même chose pour x, x1 et x2 qui vaudront 0 dès le début et ne seront pas changé explicitement. De plus on peut choisir le type Double pour éviter les arrondis.
Enfin, les tests avec If ne sont pas corrects car en mettant If delta >= 0 Then et ensuite ElseIf delta = 0 cette deuxième condition est incluse dans la première. D'où l'affichage de x1 et x2 pour delta nul.
Voilà le code commenté avec quelques ajouts :
Imports System.Math 'librairie qui peut servir pour ce genre de programme Public Class Form1 Dim a As Integer Dim b As Integer Dim c As Integer Dim delta As Integer Dim x1 As Double 'type double pour plus de précision Dim x2 As Double Dim x As Double Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If IsNumeric(TextBox1.Text) Then 'Vérifie que l'utilisateur tape un nombre et évite bien des erreurs a = TextBox1.Text End If End Sub Private Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged If IsNumeric(TextBox2.Text) Then b = TextBox2.Text End If End Sub Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged If IsNumeric(TextBox3.Text) Then c = TextBox3.Text End If End Sub Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged If IsNumeric(TextBox4.Text) Then TextBox4.Text = delta 'inutile car on calcule automatiquement delta End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click delta = (b ^ 2) - (4 * a * c) 'ici delta prendra une valeur TextBox4.Text = delta 'affichage du delta correct If delta > 0 Then 'seulement si supérieur à 0 x1 = (-b + (Math.Sqrt(delta))) / 2 * a 'exemple avec Math.Sqrt qui équivaut delta^1/2 x2 = (-b - (delta ^ (1 / 2))) / 2 * a MsgBox("x1 : " & x1.ToString & vbNewLine & "x2 : " & x2.ToString) ElseIf delta = 0 Then x = (-b / 2 * a) 'ici x prendra une valeur MsgBox("x : " & x.ToString) ElseIf delta < 0 Then MsgBox("Pas de solutions") End If End Sub End Class
Bonne journée.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact- Proposé comme réponse Gabriel MongeonModerator jeudi 7 juillet 2011 19:12
- Marqué comme réponse Ciprian Duduiala mercredi 13 juillet 2011 05:44
-
Bonjour, Kiet-Kan,
Est-ce que vous avez testé la solution proposée ? Merci d'avance pour partager avec nous les résultats.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.