1. Crear la clase Fracción con las siguientes características:
- Atributos: numerador y denominador (privados)
- Propiedades: Numerador y Denominador y ValorDecimal (de sólo lectura, nos da el valor en número con decimales de la fracción).
- Constructores: dos, el primero recibe el numerador y el denominador para hacer la fracción y la segunda recibe un número con decimales que convertirá en fracción.
- Métodos:
o Definir los operadores +, -, *, /
o Sobreescribir la función ToString para que nos pinte la fracción
o Escribir la función Simplifica que nos simplifica la función.
Class fraccion
Private inumerador As Integer
Private idenominador As Integer
Private ivalordecimal As Decimal = 0.0
Public ReadOnly Property numerador() As Integer
Get
Return (inumerador)
End Get
End Property
Public ReadOnly Property denominador() As Integer
Get
Return idenominador
End Get
End Property
Public ReadOnly Property valordecimal() As Decimal
Get
Me.ivalordecimal = numerador / denominador
Return (ivalordecimal)
End Get
End Property
Public Sub New(ByVal numerador As Integer, ByVal denominador As Integer)
simplifica(numerador, denominador)
End Sub
Public Sub New(ByVal valordecimal As Decimal)
Me.ivalordecimal = valordecimal
End Sub
Public Shared Operator +(ByVal a As fraccion, ByVal b As fraccion) As String
Dim resultadoa As Integer = 0
resultadoa = (a.numerador * b.denominador) + (b.numerador * a.denominador)
Dim resultadob As Integer = 0
resultadob = a.denominador * b.denominador
Dim cad As String = ""
cad = (a.numerador & "/" & a.denominador & " + " & b.numerador & "/" & b.denominador & "=" & resultadoa & "/" & resultadob)
Return (cad)
End Operator
Public Shared Operator -(ByVal a As fraccion, ByVal b As fraccion) As String
Dim resultadoa As Integer = 0
resultadoa = (a.numerador * b.denominador) - (b.numerador * a.denominador)
Dim resultadob As Integer = 0
resultadob = a.denominador * b.denominador
Dim cad As String = ""
cad = (a.numerador & "/" & a.denominador & " - " & b.numerador & "/" & b.denominador & "=" & resultadoa & "/" & resultadob)
Return cad
End Operator
Public Shared Operator *(ByVal a As fraccion, ByVal b As fraccion) As String
Dim resultadoa As Integer = 0
resultadoa = (a.numerador * b.numerador)
Dim resultadob As Integer = 0
resultadob = a.denominador * b.denominador
Dim cad As String = ""
cad = (a.numerador & "/" & a.denominador & " * " & b.numerador & "/" & b.denominador & "=" & resultadoa & "/" & resultadob)
Return (cad)
End Operator
Public Shared Operator /(ByVal a As fraccion, ByVal b As fraccion) As String
Dim resultadoa As Integer = 0
resultadoa = (a.numerador * b.denominador)
Dim resultadob As Integer = 0
resultadob = a.denominador * b.numerador
Dim cad As String = ""
'Me.ivalordecimal = resultadoa / resultadob
cad = (a.numerador & "/" & a.denominador & " / " & b.numerador & "/" & b.denominador & "=" & resultadoa & "/" & resultadob)
Return (cad)
End Operator
Public Overrides Function ToString() As String
Dim cad As String = ""
cad = Me.inumerador & " / " & Me.idenominador
Return (cad)
End Function
Private Function mcd(ByVal a As UInteger, ByVal b As UInteger) As UInteger
Dim t As UInteger
While a > 0
t = a
a = b Mod a
b = t
End While
Return b
End Function
Private Sub simplifica(ByVal a As UInteger, ByVal b As UInteger)
Dim v1 As UInteger = mcd(a, b) 'v1 es el factor maximo de division
Me.inumerador = a
Me.idenominador = b
Me.inumerador = inumerador / v1
Me.idenominador = idenominador / v1
Me.ivalordecimal = Me.inumerador / Me.denominador
End Sub
End Class
Module Module1
Sub Main()
Dim i, j As fraccion
Dim a, b As Integer
Console.Clear()
Console.Write("Dame numerador Fraccion 1: "
a = Console.ReadLine
Console.Write("Dame denominador Fraccion 1: "
b = Console.ReadLine
Console.WriteLine()
i = New fraccion(a, b)
Console.Write("Dame numerador Fraccion 2: "
a = Console.ReadLine
Console.Write("Dame denominador Fraccion 2: "
b = Console.ReadLine
j = New fraccion(a, b)
Console.WriteLine()
Console.WriteLine(i)
Console.WriteLine(j)
Console.WriteLine("Suma de Fracciones: " & i + j & "=> " & (i.valordecimal + j.valordecimal))
Console.WriteLine("Resta de Fracciones: " & i - j & "=> " & (i.valordecimal - j.valordecimal))
Console.WriteLine("Multiplicacion de Fracciones: {0}", i * j & "=> " & (i.valordecimal * j.valordecimal))
Console.Write("Division de Fracciones: "
Console.Write(i / j & "=> " & (i.valordecimal / j.valordecimal))
Console.ReadKey()
End Sub
End Module


