DIT SI UN TRIANGLE EST RECTANGLE OU PAS

ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 - 4 janv. 2007 à 17:53
cs_RobX Messages postés 37 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 19 septembre 2007 - 10 janv. 2007 à 21:19
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/40985-dit-si-un-triangle-est-rectangle-ou-pas

cs_RobX Messages postés 37 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 19 septembre 2007
10 janv. 2007 à 21:19
Ok merci beaucoup j'etudie ca tout de suite !
Utilisateur anonyme
9 janv. 2007 à 23:36
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és 37 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 19 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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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

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...
cs_RobX Messages postés 37 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 19 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és 81 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 18 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és 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
4 janv. 2007 à 19:59
Si ((Angle1 + Angle2) = 90°) Alors c'est un triangle rectangle !

@+
cs_RobX Messages postés 37 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 19 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 !
Utilisateur anonyme
4 janv. 2007 à 18:17
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és 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
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

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 ...
Rejoignez-nous