Form code, One Button
Option Explicit
Private Sub cmdTest_Click()
Dim f1 As
CFraction
Dim f2 As
CFraction
Set f1 = New
CFraction
Set f2 = New
CFraction
f1.numerator = 2
f1.denominator =
5
f2.numerator = 3
f2.denominator =
8
'MsgBox
f1.ToString()
f1.numerator = 5
f1.denominator =
6
MsgBox
f1.ToString()
Dim
reducedFraction As CFraction
Set
reducedFraction = f1.reduced
'MsgBox
reducedFraction.ToString
Dim result As CFraction
Set result =
f1.mult(f2)
MsgBox
result.ToString
MsgBox
result.reduced.ToString
End Sub
====================================
Option Explicit
'
' CFraction
'
Private mNumerator As Integer
Private mDenominator As Integer
Private numeratorSet As Boolean
Private denominatorSet As Boolean
Private Sub Class_Initialize()
mDenominator = 1
mNumerator = 0
numeratorSet =
False
denominatorSet =
False
End Sub
Public Function mult(ByVal otherFraction As CFraction) As
CFraction
Set mult = New
CFraction
mult.numerator =
Me.numerator * otherFraction.numerator
mult.denominator
= Me.denominator * otherFraction.denominator
End Function
Public Property Get numerator() As Integer
numerator =
mNumerator
End Property
Public Property Let numerator(ByVal newValue As Integer)
If Not
numeratorSet Then
numeratorSet = True
mNumerator =
newValue
End If
End Property
Public Property Get denominator() As Integer
denominator =
mDenominator
End Property
Public Property Let denominator(ByVal newValue As Integer)
If Not
denominatorSet Then
If newValue
<> 0 Then
denominatorSet = True
mDenominator = newValue
End If
End If
End Property
Public Function ToString() As String
ToString =
CStr(mNumerator) & "/" & CStr(mDenominator)
End Function
Private Function gcd() As Integer
Dim tempN As
Integer
Dim tempD As
Integer
Dim temp As
Integer
tempN =
Me.numerator
tempD =
Me.denominator
Do While Not
(tempD = 0)
temp = tempN
Mod tempD
tempN = tempD
tempD = temp
Loop
gcd = tempN
End Function
Public Function reduced() As CFraction
Dim temp As
CFraction
Set temp = New
CFraction
'reduce stuff
Dim divisor As
Integer
divisor = gcd()
temp.numerator =
Me.numerator \ divisor
temp.denominator
= Me.denominator \ divisor
'Set temp = Me
'hidden error
Set reduced =
temp
End Function