Dit si un triangle est rectangle ou pas

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 014 fois - Téléchargée 23 fois

Contenu du snippet

Voila c'est mon tout premier code source (ca se fete non ?)^^
Je n'ai que 15 ans et je suis super debutant en VB. Vous le verrez d'ailleurs par mon code qui n'est surement pas terrible, en effet il y a plein d'exeptions que le programme ne gere pas, la plus grosse est que l'on ne peut pas rentrer une valeur decimale pour les cotés du triangle, je ne connais pas le code pour. Et quelques expetions sont très mal gérées.
Merci d'avance pour votre aide, j'ai quelques problèmes dont le plus gros (et de taille) est celui énoncé plus haut.
A+ et merci !

PS : Jene sais pas si j'ai le droit de poster la source comme le programme comporte quelques defaults

Source / Exemple :


Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Hypothènuse As Long
        Dim Angle1 As Long
        Dim Angle2 As Long
        Dim Total As Double
        Dim Total2 As Double
        Dim InputResult As String

        InputResult = InputBox("Donnez la valeur de l'hypotènuse")
        If Not IsNumeric(InputResult) Then MsgBox("Valeur Invalide !")
        Hypothènuse = CLng(InputResult)

        InputResult = InputBox("Donnez une valeur a un des petits cotés du triangle !")
        If Not IsNumeric(InputResult) Then MsgBox("Valeur invalide !")
        Angle1 = CLng(InputResult)

        InputResult = InputBox("Donnez une valeur a l'autre petit coté du triangle !")
        If Not IsNumeric(InputResult) Then MsgBox("Valeur invalide !")
        Angle2 = CLng(InputResult)

        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
End Class

A voir également

Ajouter un commentaire

Commentaires

Messages postés
37
Date d'inscription
dimanche 5 novembre 2006
Statut
Membre
Dernière intervention
19 septembre 2007

Ok merci beaucoup j'etudie ca tout de suite !
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
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
Messages postés
37
Date d'inscription
dimanche 5 novembre 2006
Statut
Membre
Dernière intervention
19 septembre 2007

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 !
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
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...
Messages postés
37
Date d'inscription
dimanche 5 novembre 2006
Statut
Membre
Dernière intervention
19 septembre 2007

Merci a tous pour vos commentaires, ca m'est très utile, et j'essaierai avec la proprité Value
Merci encore !
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.