Method of Multiplying Fractions
Multiplying fractions is pretty straightforward:
Cancel out all common factors between numerators and denominators,
then multiply whatever is left numerator to numerator and
denominator to denominator.
Algorithm Steps to Multiply Fractions in VB.Net:
If we have
4/9 x 21/8;
Step 1:
Find any common factor between any numerator and any denominator.
Step 2:
Cancel out any such common factor.
Step 3:
Repeat Steps 1 & 2 recursively until there are no
more common factors.
Create a new class file; Project, Add Class.
Call it MultiplyFraction.vb.
Optionally, create a new module file; Project, Add Module.
Call it MultiplyFractionModule.vb.
Type out the adjoining Visual Basic (VB.Net) codes for multiplying fractions.
Note: You can instead comment out the VB.Net code in
the main module from the previous lesson or simply continue from where it stopped.
So!
Feel free to try out your own set of numerators and denominators for fractional multiplication.
VB.Net code for MultiplyFraction Class File
Public Class MultiplyFraction
Protected numerators() As Integer
Protected denominators() As Integer
Protected trial_factor As Integer
Protected n_index As Integer
Protected d_index As Integer
Protected answer(2) As Integer
Protected mutual_factor As Boolean
Public Sub _init_(fractions As Dictionary(Of String, Integer()))
numerators = fractions.Item("numerators")
denominators = fractions.Item("denominators")
trial_factor = 0
n_index = 0
d_index = 0
answer = {1, 1}
For Each numerator In numerators
If numerator > trial_factor Then
trial_factor = numerator
End If
Next
For Each denominator In denominators
If denominator > trial_factor Then
trial_factor = denominator
End If
Next
End Sub
Public Function doMultiply() As Dictionary(Of String, Integer)
Do While trial_factor > 1
Do While n_index < numerators.Count
mutual_factor = False
If numerators(n_index) Mod trial_factor = 0 Then
Do While d_index < denominators.Count
If denominators(d_index) Mod trial_factor = 0 Then
mutual_factor = True
Exit Do
End If
d_index += 1
Loop
Exit Do
End If
n_index += 1
Loop
If mutual_factor Then
numerators(n_index) = CInt(numerators(n_index) / trial_factor)
denominators(d_index) = CInt(denominators(d_index) / trial_factor)
Continue Do
End If
n_index = 0
d_index = 0
trial_factor -= 1
Loop
For Each numerator In numerators
answer(0) *= numerator
Next
For Each denominator In denominators
answer(1) *= denominator
Next
Dim send_back As New Dictionary(Of String, Integer)
send_back.Add("numerator", answer(0))
send_back.Add("denominator", answer(1))
Return send_back
End Function
End Class
Main Module
Module Algebra_MultiplyFraction
Sub Main()
Dim numerators = {16, 20, 27, 20}
Dim denominators = {9, 9, 640, 7}
Dim fractions As New Dictionary(Of String, Integer())
fractions.Add("numerators", numerators)
fractions.Add("denominators", denominators)
Console.WriteLine(" Solving:")
For Each numerator In fractions.Item("numerators")
Console.Write(String.Format("{0,13}", numerator))
Next
Console.Write(Environment.NewLine & String.Format("{0,12}", " "))
For wasted = 0 To numerators.Count - 2
Console.Write(String.Format("{0}", "- X "))
Next
Console.WriteLine(String.Format("{0,1}", "-"))
For Each denominator In fractions.Item("denominators")
Console.Write(String.Format("{0,13}", denominator))
Next
Console.WriteLine("")
Dim mul_fract As New MultiplyFraction
mul_fract._init_(fractions)
Dim fraction = mul_fract.doMultiply()
Console.WriteLine(Environment.NewLine)
Console.WriteLine(String.Format("{0,25}", fraction.Item("numerator")))
Console.WriteLine(String.Format("{0,25}", "Answer = -"))
Console.WriteLine(String.Format("{0,25}", fraction.Item("denominator")))
End Sub
End Module