Convertir un nombre décimal en fraction

Description

Voici mon premier programme. Ce dernier est basé sur un algorithme que j'ai trouvé et modifier. Il prend en charge les nombres infinis comme par exemple 1,3333333333.

Source / Exemple :


Public Class Form1

    'On remplace le point du clavier numérique par une virgule
    Private Sub Text1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Text1.KeyPress
        If e.KeyChar = "."c Then e.KeyChar = ","c
    End Sub

    'On vérifie que l'utilisateur a rentrer un nombre
    Function Verification() As Boolean
        Dim Bon As Boolean = True

        If Me.Text1.Text Is Nothing Or Not IsNumeric(Me.Text1.Text) Then
            Bon = False
        End If
        Return Bon
    End Function

    Private Sub Text1_TextChanged(ByVal sender As System.Object, ByVal i As System.EventArgs) Handles Text1.TextChanged
        If Verification() Then
            Dim a As String
            Dim b As String
            Dim c As String
            Dim d As String
            Dim e As String
            Dim f As String
            Dim g As String
            Dim h As String

            Me.Text1.BackColor = Color.GreenYellow 'Si la saisie est correcte le fond est vert claire

            f = Text1.Text : b = 1 : c = 1 : d = 0 : g = f : e = Int(g) : a = e

            If f = 0 Then Text2.Text = f : Exit Sub

            If Math.Abs(f - a / b) < 10 ^ -7 And b = 1 Then Text2.Text = a : Exit Sub

            Do
                If Math.Abs(f - a / b) < 10 ^ -6 Then Text2.Text = a & " / " & b : Exit Sub 'Ici on met une condition pour les nombres infinis, par exemple 1,3333333333
                g = 1 / (g - e) : e = Int(g) : h = a * e + c : c = a : a = h
                h = b * e + d : d = b : b = h
            Loop
        Else
            Me.Text1.BackColor = Color.Red 'Si la saisie est incorrecte le fond est rouge
        End If
    End Sub

    'Si l'utilisateur clique sur l'image, cela ferme le programme
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        End
    End Sub

    'Quand l'utilisateur passe la souris sur l'image une infobulle apparait.
    Private Sub PictureBox1_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseHover
        Me.ToolTip1.SetToolTip(Me.PictureBox1, "Fermer")
    End Sub
End Class

Conclusion :


Je suis ouvert à toute critique

Codes Sources

A voir également

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.