begin process at 2012 05 27 14:37:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > CLSFRACTION, UNE CLASSE VB.NET GÉRANT LES FRACTIONS.

CLSFRACTION, UNE CLASSE VB.NET GÉRANT LES FRACTIONS.


 Information sur la source

Note :
Aucune note
Catégorie :Maths Source .NET ( DotNet ) Classé sous :fractions, surcharge, opérateurs, simplification, exceptions Niveau :Débutant Date de création :31/05/2010 Date de mise à jour :21/08/2010 10:15:40 Vu / téléchargé :3 078 / 116

Auteur : ghuysmans99

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce programme n'aurait pas vu le jour sans un demande de programme par MP. Je le poste ici car je le juge utile pour comprendre l'utilité de la surcharge d'opérateurs en VB.NET et l'utilisation des exceptions. Il n'utilise aucune fonction de VB6 et est par conséquent en "pur" dotnet.

Source

  • Option Explicit On
  • Public Class clsFraction
  • Protected V_Numerator As Integer
  • Protected V_Denominator As Integer
  • Public Property Numerator() As Integer
  • Get
  • Return V_Numerator
  • End Get
  • Set(ByVal value As Integer)
  • V_Numerator = value
  • End Set
  • End Property
  • Public Property Denominator() As Integer
  • Get
  • Return V_Denominator
  • End Get
  • Set(ByVal value As Integer)
  • If value = 0 Then Throw New Exception("Le dénominateur d'une fraction ne peut pas être nul !")
  • V_Denominator = value
  • End Set
  • End Property
  • Protected Function GCD(ByVal a As Integer, ByVal b As Integer) As Integer
  • If a = 0 Then Return b
  • While b <> 0
  • If a > b Then
  • a = a - b
  • Else
  • b = b - a
  • End If
  • End While
  • Return a
  • End Function
  • Public Sub Reduce()
  • Dim p As Integer
  • p = GCD(V_Numerator, V_Denominator)
  • V_Numerator \= p
  • V_Denominator \= p
  • End Sub
  • Public Sub New(Optional ByVal num As Integer = 0, Optional ByVal den As Integer = 1)
  • Numerator = num
  • Denominator = den
  • Reduce()
  • End Sub
  • Public Overrides Function ToString() As String
  • Return (V_Numerator.ToString() & "/" & V_Denominator.ToString())
  • End Function
  • Public Shared Operator +(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
  • Return New clsFraction(F1.Numerator * F2.Denominator + F2.Numerator * F1.Denominator, F1.Denominator * F2.Denominator)
  • End Operator
  • Public Shared Operator -(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
  • Return New clsFraction(F1.Numerator * F2.Denominator - F2.Numerator * F1.Denominator, F1.Denominator * F2.Denominator)
  • End Operator
  • Public Shared Operator *(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
  • Return New clsFraction(F1.Numerator * F2.Numerator, F1.Denominator * F2.Denominator)
  • End Operator
  • Public Shared Operator /(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
  • Return New clsFraction(F1.Numerator * F2.Denominator, F1.Denominator * F2.Numerator)
  • End Operator
  • End Class
Option Explicit On

Public Class clsFraction
    Protected V_Numerator As Integer
    Protected V_Denominator As Integer

    Public Property Numerator() As Integer
        Get
            Return V_Numerator
        End Get
        Set(ByVal value As Integer)
            V_Numerator = value
        End Set
    End Property

    Public Property Denominator() As Integer
        Get
            Return V_Denominator
        End Get
        Set(ByVal value As Integer)
            If value = 0 Then Throw New Exception("Le dénominateur d'une fraction ne peut pas être nul !")
            V_Denominator = value
        End Set
    End Property

    Protected Function GCD(ByVal a As Integer, ByVal b As Integer) As Integer
        If a = 0 Then Return b
        While b <> 0
            If a > b Then
                a = a - b
            Else
                b = b - a
            End If
        End While
        Return a
    End Function

    Public Sub Reduce()
        Dim p As Integer
        p = GCD(V_Numerator, V_Denominator)
        V_Numerator \= p
        V_Denominator \= p
    End Sub

    Public Sub New(Optional ByVal num As Integer = 0, Optional ByVal den As Integer = 1)
        Numerator = num
        Denominator = den
        Reduce()
    End Sub

    Public Overrides Function ToString() As String
        Return (V_Numerator.ToString() & "/" & V_Denominator.ToString())
    End Function

    Public Shared Operator +(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
        Return New clsFraction(F1.Numerator * F2.Denominator + F2.Numerator * F1.Denominator, F1.Denominator * F2.Denominator)
    End Operator
    Public Shared Operator -(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
        Return New clsFraction(F1.Numerator * F2.Denominator - F2.Numerator * F1.Denominator, F1.Denominator * F2.Denominator)
    End Operator
    Public Shared Operator *(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
        Return New clsFraction(F1.Numerator * F2.Numerator, F1.Denominator * F2.Denominator)
    End Operator
    Public Shared Operator /(ByVal F1 As clsFraction, ByVal F2 As clsFraction) As clsFraction
        Return New clsFraction(F1.Numerator * F2.Denominator, F1.Denominator * F2.Numerator)
    End Operator
End Class


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 juin 2010 21:16:36 :
Utilisation d'un calcul de PGCD pour la simplification de fraction.
03 juin 2010 21:17:57 :
(idem) oubli de modif dans l'aperçu du code
21 août 2010 10:15:42 :
Changement du nom de la classe, nettoyage des références inutiles, passage à VB2010 et au framework 4

 Sources du même auteur

Source avec Zip Source avec une capture LES BASES DE DONNÉES EN VB6
Source avec Zip Source avec une capture FRACTIONS, UN PROGRAMME VB6 UTILISANT UNE DLL C++ POUR CALCU...
Source avec Zip Source avec une capture IP2COUNTRY, UN IMPORT DE CSV VERS MYSQL EN CONSOLE ET UN PRO...
Source avec Zip Source avec une capture LA CONSOLE WINDOWS, EN VB6
Source avec Zip Source avec une capture QEMUGUI - LANCEUR DE QEMU

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) PERMUTATIONS DE CARACTÈRES par alpha5
Source avec Zip Source avec une capture PARTICIPATION À L'APPRENTISSAGE DE LECTURE DE L'HEURE (PENDU... par oulipan
Source avec Zip Source avec une capture TECHNIQUE TRADITIONNELLE DE LA DIVISION par oulipan
Source avec Zip Source avec une capture ENTRAÎNEMENT POUR EFFECTUER DES MULTIPLICATIONS EN COLONNES ... par oulipan
Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks

 Sources en rapport avec celle ci

Source .NET (Dotnet) CONTROLS PERSONALISÉ TEXTBOX par rodcobalt22
Source avec Zip Source avec une capture FRACTIONS, UN PROGRAMME VB6 UTILISANT UNE DLL C++ POUR CALCU... par ghuysmans99
Source avec Zip Source avec une capture INTERCEPTER DES APPELS DE METHODE (SURCHARGE DE VTABLE) par Renfield
Source .NET (Dotnet) STRUCTURE MATRICE : SURCHARGE DES OPÉRATEURS POUR LE CALCUL ... par pifou25
Source avec Zip SIMPLIFICATION DE FRACTIONS DÉTAILLÉE par Math_Ador

Commentaires et avis

Commentaire de kbalist le 03/06/2010 09:26:37

Interessant, juste une remarque : pour réduire une fraction il serait plus rapide de calculer le PGCD des 2 termes (ce qui donnera directement le nombre par lequel on peut simplifier), surtout si ce sont des grands nombres.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Surcharge opérateurs (VB6) [ par MoiOlivier ] Bonjour &#224; tous,Comme dans le titre :Est-il possible, en VB6, de surcharger les op&#233;rateurs (comme en C++) ?Merci d'avance. surcharge d'opérateurs [ par sobredim ] existe-t-il comme en C# la possibilité en Visual Basic .Net de surcharger les opérateurs pour une class, ou une structure.exemple en C# : public stati ListView ajout d'une ligne [ par EvilGost ] Bonjour à tous,voilà, j'ai un petit soucis, j'utilise une listview en VB.net 2003. et je sais que pour ajouter un élement, c'est ListView.Items.add("T Operateur "*=" et "=*" [ par m_toul ] Bonjour,Je mets à niveau un soft prévu pour Ms SqlServer 2000 pour l'utiliser avec Ms SqlServer 2005. En reprenant le code je tombe sur les opérateurs Gestion des exceptions [ par ov3rdoze ] Bonjour à tous Je suis en train de terminer le développement d'une application et je peaufine la gestion des exeptions afin d'afficher un message déc Mon application ignore les exceptions [ par narfight ] Bonjour,Mon programme VB.Net semble ignorer mes exceptions comme si j'etais dans un Try/Catch ou si j'avais définit un "On Error" mais ce n'est pas le simplification d une commande repetitive. [ par lilikel ] Bonjour a tous,J'ai redigee la macro suivante Sub macro1()If Range("i25") Like "0*" Then    Range("l25") = "RA2000"ElseIf Range("i25") Like "9 exceptions [ par habibovitch ] bonjour,le probleme est :un utilisateur supprime une ligne dans la base de données, et un autre utilisateur entain de modifier la meme ligne dans l'ap Exceptions [ par habibovitch ] bonjour,qui peut donner un idée sur cette erreur: DataColumn 'Ligne' manquant dans DataTable 'ES_CdeEntete' pour SourceColumn 'Ligne'(VB.NET)merci. Surcharge évenements [ par bobo10 ] Bonjour, Peut-on créer un évenement personnalisé en plus de ceux qui existe déja dans le datagridview et si oui comment faire. du style AddHandler M


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales