none
aidez moi svp probleme en code... RRS feed

  • 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 

    mercredi 6 juillet 2011 21:14

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
    jeudi 7 juillet 2011 11:10

Toutes les réponses

  • salut,

    colle ton code ici et explique car la video c'est long et musique bof

     

    ciao

    mercredi 6 juillet 2011 21:36
  • 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
    jeudi 7 juillet 2011 11:10
  • 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


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    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.

    lundi 11 juillet 2011 14:16