class Fraccion

Attributes

denominador[R]

metodo que permite acceder a los atributos de la clase

numerador[R]

metodo que permite acceder a los atributos de la clase

Public Class Methods

new(n,d) click to toggle source
# File lib/prac09/fraccion.rb, line 8
def initialize(n,d)
    simp=gcd(n,d) #guarda el maximo comun divisor

    if d!=0
        @numerador=n
        @denominador=d
    end

 #utiliza el maximo comun divisor para simplificar la  fraccion
 @numerador, @denominador = n/simp, d/simp 
 end

Public Instance Methods

%(object) click to toggle source

metodo para calcular el resto de la division de dos fracciones

# File lib/prac09/fraccion.rb, line 105
def % (object)
    #guarda la division de las fracciones
    division=self.abs/object.abs
    #calcula el resto
    resto=object.abs * (division - Fraccion.new(division.to_float.to_i,1))
    if (object.numerador < 0)
           #si el numerador es negativo imprime el opuesto del resto
           return -resto
    end
    #lo imprime
    resto  
end
*(object) click to toggle source

metodo para calcular la multiplicacion de dos fracciones

# File lib/prac09/fraccion.rb, line 89
def *(object)
    if(object.is_a?(Numeric))
            object = Fraccion.new(object,1)
    end
    Fraccion.new(@numerador*object.numerador,@denominador*object.denominador)
end
+(object) click to toggle source

metodo para calcular la suma de dos fracciones

# File lib/prac09/fraccion.rb, line 68
def +(object)
            if (object.instance_of?(Fraccion)==true)
            
                    aux=mcm(@denominador,object.denominador)
                    return Fraccion.new((((aux*@numerador)/@denominador)+(aux*object.numerador)/object.denominador),aux)
                    
            end   
            if (object.instance_of?( Fixnum )==true)
                    aux=Fraccion.new(object, 1)
                    m=mcm(@denominador,aux.denominador)
                    return Fraccion.new((((m*@numerador)/@denominador) + (m*aux.numerador)/aux.denominador),m)
            end
end
-(object) click to toggle source

metodo para calcular la resta de dos fracciones

# File lib/prac09/fraccion.rb, line 83
def -(object)
    aux=mcm(@denominador,object.denominador)
    Fraccion.new((((aux*@numerador)/@denominador)-(aux*object.numerador)/object.denominador),aux)
end
-@() click to toggle source

metodo para calcular el opuesto de una fraccion

# File lib/prac09/fraccion.rb, line 51
def -@ ()
    if(@numerador>0 && @denominador<0)
          @numerador = @numerador.abs
          @denominador = @denominador.abs
    
    elsif(@numerador<0 && @denominador>0)
          @numerador = @numerador.abs
          @denominador = @denominador.abs
    
    else 
          @numerador = -(@numerador.abs)
          @denominador = @denominador.abs
    end
     Fraccion.new(@numerador,@denominador)
end
/(object) click to toggle source

metodo para calcular la division de dos fracciones

# File lib/prac09/fraccion.rb, line 97
def /(object)
    #multiplica numerador con numerador y denominador con denominador
                    Fraccion.new(@numerador*object.denominador,@denominador*object.numerador)
                    
    
end
<=>(object) click to toggle source

Utilizamos el metodo del modulo Comparable para realizar operaciones comparacionales de fracciones

# File lib/prac09/fraccion.rb, line 120
def <=> (object)
     self.to_float<=>object.to_float    
end
abs() click to toggle source

metodo para calcular el valor absoluto de una fraccion

# File lib/prac09/fraccion.rb, line 41
def abs ()
    Fraccion.new(@numerador.abs,@denominador.abs)
end
coerce(object) click to toggle source
# File lib/prac09/fraccion.rb, line 146
def coerce(object)
        [self,object]
end
denom() click to toggle source

metodo que devuelve el denominador

# File lib/prac09/fraccion.rb, line 26
def denom()
    @denominador
end
gcd(n, d) click to toggle source
# File lib/prac09/fraccion.rb, line 124
def gcd(n, d)
    n1,n2 = n.abs,d.abs
    gcd = 1
    k = 1
    while (k <= n1 and k <= n2)
         if (n1 % k == 0 and n2 % k == 0)
             gcd = k
         end
         k += 1
    end
    return gcd
end
mcm(a,b) click to toggle source

metodo para hallar el minimo comun multiplo de los dos numeros pasados como parametros

# File lib/prac09/fraccion.rb, line 139
def mcm(a,b)
   #mediante el metodo de euclides, resolvemos el minimo comun multiplo mediante el
   #maximo comun divisor
   aux=gcd(a,b)
   (a/aux)*b
end
num() click to toggle source

metodo que devuelve el numerador

# File lib/prac09/fraccion.rb, line 21
def num()
    @numerador
end
reciprocal() click to toggle source

metodo para calcular el reciproco de una fraccion

# File lib/prac09/fraccion.rb, line 46
def reciprocal ()
    Fraccion.new(@denominador,@numerador)
end
to_float() click to toggle source

metodo para mostrar por la consola la fraccion en punto flotante

# File lib/prac09/fraccion.rb, line 36
def to_float
    (@numerador.to_f()/@denominador.to_f)
end
to_s() click to toggle source

metodo para mostrar por la consola la fraccion

# File lib/prac09/fraccion.rb, line 31
def to_s
    "#{@numerador}/#{@denominador}"
end