Option Explicit
Public operando1 As Fraccion
Public operando2 As Fraccion
Public resultado As Fraccion
Public Type Fraccion
Numerador As Double
Denominador As Double
End Type
Public Sub Simplificar()
Dim intPrimos(5) As Integer, int1 As Integer
Dim ind1 As Boolean
intPrimos(0) = 2
intPrimos(1) = 3
intPrimos(2) = 5
intPrimos(3) = 7
intPrimos(4) = 11
'Se recibe la entrada sin simplificar de operando1
'y se devuelve simplificada en resultado.
resultado = operando1
ind1 = True
Do While ind1
ind1 = False
For int1 = 0 To 4
If resultado.Numerador Mod intPrimos(int1) = 0 _
And resultado.Denominador Mod intPrimos(int1) = 0 Then
resultado.Numerador = resultado.Numerador / intPrimos(int1)
resultado.Denominador = resultado.Denominador / intPrimos(int1)
ind1 = True
End If
Next int1
Loop
End Sub
Public Sub Sumar(Optional ByVal Simp As Boolean)
Dim den As Double
den = operando1.Denominador * operando2.Denominador
operando1.Numerador = operando1.Numerador * operando2.Denominador
operando2.Numerador = operando2.Numerador * operando1.Denominador
operando1.Denominador = den
operando2.Denominador = den
If Not Simp Then
resultado.Numerador = operando1.Numerador + operando2.Numerador
resultado.Denominador = den
Else
operando1.Numerador = operando1.Numerador + operando2.Numerador
Simplificar
End If
End Sub
Public Sub Restar(Optional ByVal Simp As Boolean)
Dim den As Double
den = operando1.Denominador * operando2.Denominador
operando1.Numerador = operando1.Numerador * operando2.Denominador
operando2.Numerador = operando2.Numerador * operando1.Denominador
operando1.Denominador = den
operando2.Denominador = den
If Not Simp Then
resultado.Numerador = operando1.Numerador - operando2.Numerador
resultado.Denominador = den
Else
operando1.Numerador = operando1.Numerador - operando2.Numerador
Simplificar
End If
End Sub
Public Sub Multiplicar(Optional ByVal Simp As Boolean)
If Not Simp Then
resultado.Numerador = operando1.Numerador * operando2.Numerador
resultado.Denominador = operando1.Denominador * operando2.Denominador
Else
operando1.Numerador = operando1.Numerador * operando2.Numerador
operando1.Denominador = operando1.Denominador * operando2.Denominador
Simplificar
End If
End Sub
Public Sub Dividir(Optional ByVal Simp As Boolean)
If Not Simp Then
resultado.Numerador = operando1.Numerador * operando2.Denominador
resultado.Denominador = operando1.Denominador * operando2.Numerador
Else
operando1.Numerador = operando1.Numerador * operando2.Denominador
operando1.Denominador = operando1.Denominador * operando2.Numerador
Simplificar
End If
End Sub