Attention, Us fait du vb6, il d'indique donc "On error Resume Next"
En dotnet c'est des try...catch ou des trycast qu'il faut utiliser.
Ca sert à faire une gestion d'erreur. Si par exemple on indique des données qui provoquent des erreur, ca plantera pas. Tu indiquera alors pouquoi y'a une erreur.
Tiens, fait un tour sur la MSDN: http://msdn2.microsoft.com/en-us/library/fk6t46tz.aspx
cs_RobX
Messages postés37Date d'inscriptiondimanche 5 novembre 2006StatutMembreDernière intervention19 septembre 2007 9 janv. 2007 à 22:29
106 ans ??
Ca fait plaisir de voir des jeunes sur le forum ! :D
Sinon j'ai revu un peu mon code, et j'ai mis a la place des "long" des "double", et ca marche !
J'ai aussi refait le programme avec des TextBox et des Labels, n'étant pas fan de MessageBox.
Mais quelques exeptions ne sont pas encore gérées, il faut juste que je reflechisse un peu.
Par contre je n'ai pas très bien compris a quoi servait le "On error Resume Next". pourrais tu m'expliquer davantage ?
Merci d'avance !
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 6 janv. 2007 à 19:14
Bonjour à tous,
On fera tout de même attention au code de ghuysmans99 qui comporte une petite erreur dans "function DemandeHyp". En effet, il faut écrire la dernière ligne ainsi :
If Not IsNumeric(InputResult) Then DemandeHyp 0 Else DemandeHyp CLng(InputResult)
au lieu de :
If Not IsNumeric(InputResult) Then DemandeHyp 0 Else Hypothènuse CLng(InputResult)
pour que la valeur DemandeHyp soit renvoyée...
=
Ensuite, comme déjà dis, le type long arrondi tout nombre en entier. Or, un triangle peut avoir des longueurs décimales tout en restant un triangle rectangle... Donc ici, le type long est à bannir.
=
Si on va un petit peu plus loin, il y a aussi le test dans DemandeHyp qui semble inutile... Il serait plus judicieux d'utiliser le test d'erreur avec ON ERROR RESUME NEXT. Idem avec la fonction DemandeAngle. (qui porte mal son nom, au passage...)
Ce qui donnerait :
Public Function DemandeHyp() As Double
On Error Resume Next
DemandeHyp = InputBox("Donnez la valeur de l'hypotènuse")
End Function
=
Avec quelques autres petites choses inutiles en moins, cela donne ma version :
Private Sub Form_Load()
Dim Hypothènuse As Double
Dim Angle1 As Double
Dim Angle2 As Double
Dim Total As Double
Dim Total2 As Double
MsgBox "Le carré de l'hypothènuse vaut : " & Total
MsgBox "La somme des 2 cotés au carré vaut : " & Total2
If Total < Total2 Then MsgBox "Triangle impossible"
If Total = Total2 Then
MsgBox "Le triangle est rectangle !"
Else
MsgBox "Le triangle n'est pas rectangle"
End If
End Sub
Public Function DemandeHyp() As Double
On Error Resume Next
DemandeHyp = InputBox("Donnez la valeur de l'hypotènuse")
End Function
Public Function DemandeAngle(n As Integer) As Double
On Error Resume Next
If n 1 Then tmp "1er" Else tmp = "2ième"
DemandeAngle = InputBox("Donnez une valeur au " & tmp & " petit coté du triangle !")
End Function
=
Amicalement,
Us.
PS : J'ai que 106 ans...
cs_RobX
Messages postés37Date d'inscriptiondimanche 5 novembre 2006StatutMembreDernière intervention19 septembre 2007 5 janv. 2007 à 18:47
Merci a tous pour vos commentaires, ca m'est très utile, et j'essaierai avec la proprité Value
Merci encore !
cs_FraGag
Messages postés81Date d'inscriptionjeudi 19 février 2004StatutMembreDernière intervention18 avril 2008 4 janv. 2007 à 21:24
Comme c'est un débutant, je crois que c'était un meilleur choix de mettre ce code ici plutôt que sur Codyx.org, car ici on peut mettre des commentaires et ainsi aider l'auteur.
Bon, d'abord, les "petits côtés du triangle" s'appellent des cathètes dans un triangle rectangle (l'autre s'appelant bien sûr l'hypoténuse, avec un seul H au début et un accent aigu...). Ensuite, pour utiliser des nombres décimaux, utilise le type Decimal au lieu de Long : ce dernier gère des grands nombres, mais seulements des nombres entiers. Aussi, on a suggéré plus haut d'utiliser des TextBox, mais si tu veux être sûr que les données sont des nombres, tu peux aussi utiliser des NumericUpDown. Ça tombe bien, la propriété Value a le type Decimal :).
Bonne chance !
FraGag
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 4 janv. 2007 à 20:45
Salut,
1/ EB et Kenji ont tout dis
2/ un snippet se met sur codyx.org, j'appelle pas ça une source, mais bon, soit !
++
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 4 janv. 2007 à 19:59
Si ((Angle1 + Angle2) = 90°) Alors c'est un triangle rectangle !
@+
cs_RobX
Messages postés37Date d'inscriptiondimanche 5 novembre 2006StatutMembreDernière intervention19 septembre 2007 4 janv. 2007 à 19:13
Merci a vous !!!
ghuysmans99 j'ai essayé ton code et il marche bien, merci beaucoup !!
Et puis c'est pas bete d'essayer avec des textbox, donc j'essaye et he verrai le resultat !
Pourquoi des bytes ou des long ? Si j'ai un coté qui fait 45537.25644 ???
Et si les angles en bytes, pourquoi le total en double ?
En DotNet, le Microsoft.VisualBasic est à banir, si on l'utilise autant faire du vb6.
Pourquoi pas faire ca graphiquement (avec des TextBoxs) ?
__
Kenji
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 20161 4 janv. 2007 à 17:53
Voilà ma petite version perso ...
Private Sub Form_Load()
Dim Hypothènuse As Long
Dim Angle1 As Byte
Dim Angle2 As Byte
Dim Total As Double
Dim Total2 As Double
MsgBox ("Le carré de l'hypothènuse est de : " & Total)
MsgBox ("La somme des 2 cotés est de : " & Total2)
If Total < Total2 Then MsgBox ("Impossible")
If Total = Total2 Then
MsgBox ("Le triangle est rectangle !")
Else
MsgBox ("Le triangle n'est pas rectangle ")
End If
End Sub
Public Function DemandeHyp() As Long
Dim InputResult As String
InputResult = InputBox("Donnez la valeur de l'hypotènuse")
If Not IsNumeric(InputResult) Then DemandeHyp 0 Else Hypothènuse CLng(InputResult)
End Function
Public Function DemandeAngle(n As Integer) As Byte
Dim tmp As String
If n 1 Then tmp "1er"
If n > 1 Then tmp = n & "ème"
InputResult = InputBox("Donnez une valeur au " & tmp & " petit coté du triangle !")
If Not IsNumeric(InputResult) Then DemandeAngle 0 Else DemandeAngle CLng(InputResult)
End Function
PS : J'ai que 11ans ! Mais j'ai eu un pc à 4ans ...
10 janv. 2007 à 21:19
9 janv. 2007 à 23:36
En dotnet c'est des try...catch ou des trycast qu'il faut utiliser.
Ca sert à faire une gestion d'erreur. Si par exemple on indique des données qui provoquent des erreur, ca plantera pas. Tu indiquera alors pouquoi y'a une erreur.
Tiens, fait un tour sur la MSDN: http://msdn2.microsoft.com/en-us/library/fk6t46tz.aspx
9 janv. 2007 à 22:29
Ca fait plaisir de voir des jeunes sur le forum ! :D
Sinon j'ai revu un peu mon code, et j'ai mis a la place des "long" des "double", et ca marche !
J'ai aussi refait le programme avec des TextBox et des Labels, n'étant pas fan de MessageBox.
Mais quelques exeptions ne sont pas encore gérées, il faut juste que je reflechisse un peu.
Par contre je n'ai pas très bien compris a quoi servait le "On error Resume Next". pourrais tu m'expliquer davantage ?
Merci d'avance !
6 janv. 2007 à 19:14
On fera tout de même attention au code de ghuysmans99 qui comporte une petite erreur dans "function DemandeHyp". En effet, il faut écrire la dernière ligne ainsi :
If Not IsNumeric(InputResult) Then DemandeHyp 0 Else DemandeHyp CLng(InputResult)
au lieu de :
If Not IsNumeric(InputResult) Then DemandeHyp 0 Else Hypothènuse CLng(InputResult)
pour que la valeur DemandeHyp soit renvoyée...
=
Ensuite, comme déjà dis, le type long arrondi tout nombre en entier. Or, un triangle peut avoir des longueurs décimales tout en restant un triangle rectangle... Donc ici, le type long est à bannir.
=
Si on va un petit peu plus loin, il y a aussi le test dans DemandeHyp qui semble inutile... Il serait plus judicieux d'utiliser le test d'erreur avec ON ERROR RESUME NEXT. Idem avec la fonction DemandeAngle. (qui porte mal son nom, au passage...)
Ce qui donnerait :
Public Function DemandeHyp() As Double
On Error Resume Next
DemandeHyp = InputBox("Donnez la valeur de l'hypotènuse")
End Function
=
Avec quelques autres petites choses inutiles en moins, cela donne ma version :
Private Sub Form_Load()
Dim Hypothènuse As Double
Dim Angle1 As Double
Dim Angle2 As Double
Dim Total As Double
Dim Total2 As Double
Hypothènuse = DemandeHyp()
Angle1 = DemandeAngle(1)
Angle2 = DemandeAngle(2)
Total = Hypothènuse * Hypothènuse
Total2 = Angle1 * Angle1 + Angle2 * Angle2
MsgBox "Le carré de l'hypothènuse vaut : " & Total
MsgBox "La somme des 2 cotés au carré vaut : " & Total2
If Total < Total2 Then MsgBox "Triangle impossible"
If Total = Total2 Then
MsgBox "Le triangle est rectangle !"
Else
MsgBox "Le triangle n'est pas rectangle"
End If
End Sub
Public Function DemandeHyp() As Double
On Error Resume Next
DemandeHyp = InputBox("Donnez la valeur de l'hypotènuse")
End Function
Public Function DemandeAngle(n As Integer) As Double
On Error Resume Next
If n 1 Then tmp "1er" Else tmp = "2ième"
DemandeAngle = InputBox("Donnez une valeur au " & tmp & " petit coté du triangle !")
End Function
=
Amicalement,
Us.
PS : J'ai que 106 ans...
5 janv. 2007 à 18:47
Merci encore !
4 janv. 2007 à 21:24
Bon, d'abord, les "petits côtés du triangle" s'appellent des cathètes dans un triangle rectangle (l'autre s'appelant bien sûr l'hypoténuse, avec un seul H au début et un accent aigu...). Ensuite, pour utiliser des nombres décimaux, utilise le type Decimal au lieu de Long : ce dernier gère des grands nombres, mais seulements des nombres entiers. Aussi, on a suggéré plus haut d'utiliser des TextBox, mais si tu veux être sûr que les données sont des nombres, tu peux aussi utiliser des NumericUpDown. Ça tombe bien, la propriété Value a le type Decimal :).
Bonne chance !
FraGag
4 janv. 2007 à 20:45
1/ EB et Kenji ont tout dis
2/ un snippet se met sur codyx.org, j'appelle pas ça une source, mais bon, soit !
++
4 janv. 2007 à 19:59
@+
4 janv. 2007 à 19:13
ghuysmans99 j'ai essayé ton code et il marche bien, merci beaucoup !!
Et puis c'est pas bete d'essayer avec des textbox, donc j'essaye et he verrai le resultat !
4 janv. 2007 à 18:17
Et si les angles en bytes, pourquoi le total en double ?
En DotNet, le Microsoft.VisualBasic est à banir, si on l'utilise autant faire du vb6.
Pourquoi pas faire ca graphiquement (avec des TextBoxs) ?
__
Kenji
4 janv. 2007 à 17:53
Private Sub Form_Load()
Dim Hypothènuse As Long
Dim Angle1 As Byte
Dim Angle2 As Byte
Dim Total As Double
Dim Total2 As Double
Hypothènuse = DemandeHyp()
Angle1 = DemandeAngle(1)
Angle2 = DemandeAngle(2)
Total = Hypothènuse * Hypothènuse
Total2 = (Angle1 * Angle1) + (Angle2 * Angle2)
MsgBox ("Le carré de l'hypothènuse est de : " & Total)
MsgBox ("La somme des 2 cotés est de : " & Total2)
If Total < Total2 Then MsgBox ("Impossible")
If Total = Total2 Then
MsgBox ("Le triangle est rectangle !")
Else
MsgBox ("Le triangle n'est pas rectangle ")
End If
End Sub
Public Function DemandeHyp() As Long
Dim InputResult As String
InputResult = InputBox("Donnez la valeur de l'hypotènuse")
If Not IsNumeric(InputResult) Then DemandeHyp 0 Else Hypothènuse CLng(InputResult)
End Function
Public Function DemandeAngle(n As Integer) As Byte
Dim tmp As String
If n 1 Then tmp "1er"
If n > 1 Then tmp = n & "ème"
InputResult = InputBox("Donnez une valeur au " & tmp & " petit coté du triangle !")
If Not IsNumeric(InputResult) Then DemandeAngle 0 Else DemandeAngle CLng(InputResult)
End Function
PS : J'ai que 11ans ! Mais j'ai eu un pc à 4ans ...