Accueil > > > CLSFRACTION, UNE CLASSE VB.NET GÉRANT LES FRACTIONS.
CLSFRACTION, UNE CLASSE VB.NET GÉRANT LES FRACTIONS.
Information sur la source
Description
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
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
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Surcharge opérateurs (VB6) [ par MoiOlivier ]
Bonjour à tous,Comme dans le titre :Est-il possible, en VB6, de surcharger les opé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
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|