EQUATION DU SECOND DEGRÈS

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 10 nov. 2005 à 20:12
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 11 nov. 2005 à 21:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34579-equation-du-second-degres

violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
11 nov. 2005 à 21:45
Bonjour.
Alors voici aussi ma petite critique :
-a quoi sert le Private Sub MErr_Click() ??
-effectivement, si delta<0, alors si on note z le nombre tel que z²=delta, on a z=i*sqrt(abs(delta)). On peut ensuite gérer les résultats, mais dans l'ensemble des complexes, cette fois.
x'=(-b-z)/2a x''=(-b+z)/2a avec x' et x'' complexes
-un conseil : gère les erreurs. Par exemple, si on valide sans avoir rentrer de chiffres, "type incompatible". Tu avais prévu que cette erreur est possible, pourquoi ne pas la gérer ??
exemple :

Private Sub CmdVal_Click()
On Error GoTo Gestion_error
a = TxtCarr.Text
b = TxtX.Text
C = TxtC.Text
Delta = ((b * b) - (4 * a * C))
If Delta < 0 Then
MsgBox ("Erreur 1. Delta négatif")
Else
TxtRepDelta.Text = Delta
X2 = ((-b - Sqr(Delta)) / (2 * a))
TxtRepX2.Text = X2
X1 = ((-b + Sqr(Delta)) / (2 * a))
TxtRepX1.Text = X1
End If
Exit Sub
Gestion_error:
If Err.Number = 13 Then
Beep
MsgBox "Veuillez rentrez des nombres dans les champs correspondants", vbCritical, "Attention"
End If
End Sub

-je rappelle que les formules sont valables SEULEMENT pour les équations du SECOND degré. Or quand a=0, le degré du polynome est <=1. Donc le calcul n'est pas possible.
-Le programme existe déjà plusieurs fois sur le site. Il aurait donc fallut distinguer ton programme des autres, par exemple :
1) tu peux écrire la factorisation du polynôme (si x' et x'' sont les racines, alors P=a(x-x')(x-x'')
2) gestion des complexes
3) etc..
-enlève ce qui est inutile dans ton code:


Dim objetfile
Dim fichier
Const ForReading 1, ForWriting 2, ForAppending = 3


Private Sub MErr_Click()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'afficher fichier texte dans une TextBox
'Set objetfile = CreateObject("Scripting.FileSystemObject")
''Set fichier = objetfile.OpenTextFile("C:\test.txt", ForReading)
'Set fichier = objetfile.OpenTextFile("h:\EqSecDeg\Err.txt", ForReading)
''boucle pour lire le ficher
'Do While fichier.AtEndOfStream <> True
' texte = texte & fichier.ReadLine
'Loop
'
'fichier.Close
'Err = MsgBox(texte, vbOKOnly, "Liste des Erreurs") 'affichage
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Pour afficher UN texte dans un MsgBox

Err = MsgBox("Err.1: Delta négatif" & Chr(13) & "Si le Delta est négatif alors l'opération ne peut se faire" & Chr(13) & Chr(13) & "Err.13: Type incompatible" & Chr(13) & "Vérifier si les caractères entrés sont bien des entiers" & Chr(13) & "Ne pas mettre de point pour la virgule", vbInformation, "Liste des Erreurs...")

End Sub

Private Sub Picture_Click()
End Sub



Tout çà ne sert à rien du tout.
-Enfin, je te propose une source améliorée. La voilà : http://www.vbfrance.com/code.aspx?ID=34598

@+
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 nov. 2005 à 13:22
Oui c'est sa
cs_algori Messages postés 868 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 26 février 2008 1
11 nov. 2005 à 13:20
Oui, voila c'est un petit delta, ça ressemble à un d courbé il me semble.
@++
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 nov. 2005 à 13:07
Pour delta<0 on écrit rien pour résoudre on pose z²=delta avec selon les cas z=a+ib ou z=ro(exp(iTeta)) et on cherche z.

La lettre greque dont tu parles est delta mais pas celui que tu utilises pour noter le discriminant c'est un petit delta qui n'a pas dut tout la meme form.
cs_algori Messages postés 868 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 26 février 2008 1
11 nov. 2005 à 12:00
Pour info, il me semble qu'il est absolument interdit d'écrire sqrt(delta) pour delta<0, on le remplace alors par une lettre grecque (je sais plus laquelle :p)
cs_algori Messages postés 868 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 26 février 2008 1
11 nov. 2005 à 11:55
Salut,
Mets 3x² - x + 2.
Tu réponds : Erreur 1. Delta négatif.
Et non, il n'y a aucune erreur. Contrairement à ce que tu dit, l'opération peut se faire, non pas dans les réels IR mais dans les complexes C.
Donc :
x1 = (-b-i*sqrt(delta))/(2a)
x2 = (-b+i*sqrt(delta))/(2a)
avec i² = -1.

Avec 3x²-x+2 :
delta : -23
x1 = (1-i*sqrt(23))/6
x2 = (1+i*sqrt(23))/6

Voila, a toi de rectifier ton code ;-)
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 nov. 2005 à 20:12
C'est pas super cette source, quand tu programmes quelque chose pour le mettre sur ce site tout en sachant que ton programme est très classique et donc est déjà présent peut etre meme plusieurs fois, trouve quelque chose que les autres n'ont pas, ce n'est pas si difficile.

Mais c'est vrai que quand on débute c'est pas toujours facile le 4/10 que je t'ai donné n'est pas causé par un mauvais programme car le tien est correct mais plus par un manque d'interet.
Rejoignez-nous