class Racional

Implemente una clase Ruby para representar los números racionales.

Un número racional es un número con un numerador y un denominador de la forma. a/b

Attributes

denom[R]

Gets y Sets de @num y @denom

num[R]

Gets y Sets de @num y @denom

Public Class Methods

new(num, denom) click to toggle source

Se inicializa la fracción en su forma reducida haciendo uso de gcd

# File lib/modai_prct12/racional.rb, line 11
def initialize(num, denom)

  raise TypeError, "El denominador debe ser mayor que cero" unless (denom != 0)

  div = gcd(num, denom)
  @num = num/div
  @denom = denom/div

end

Public Instance Methods

%(o) click to toggle source

Calcula el resto dos fracciones con % y dar el resultado de forma reducida

# File lib/modai_prct12/racional.rb, line 99
def %(o)

  if o.is_a? Integer
    o = Racional.new(o,1)
  end
  Racional.new(num%denom, o.num%o.denom)

end
*(o) click to toggle source

multiplica dos fracciones con * y dar el resultado de forma reducida

# File lib/modai_prct12/racional.rb, line 79
def *(o)

  if o.is_a? Integer
    o = Racional.new(o,1)
  end
  Racional.new(num*o.num,denom*o.denom)

end
+(o) click to toggle source

suma dos fracciones con + y dar el resultado de forma reducida

# File lib/modai_prct12/racional.rb, line 59
def +(o)
  
  if o.is_a? Integer
    o = Racional.new(o,1)
  end
  Racional.new(num*o.denom + o.num*denom, denom*o.denom)

end
-(o) click to toggle source

resta dos fracciones con - y dar el resultado de forma reducida

# File lib/modai_prct12/racional.rb, line 69
def -(o)

  if o.is_a? Integer
    o = Racional.new(o,1)
  end
  Racional.new(num*o.denom - o.num*denom, denom*o.denom)

end
-@() click to toggle source

Calcular el opuesto de una fraccion con -

# File lib/modai_prct12/racional.rb, line 54
def -@
  Racional.new(-denom, num)        
end
/(o) click to toggle source

Divide dos fracciones con / y dar el resultado de forma reducida

# File lib/modai_prct12/racional.rb, line 89
def /(o)

  if o.is_a? Integer
    o = Racional.new(o,1)
  end
  Racional.new(num*o.denom,denom*o.num)

end
<=>(o) click to toggle source

GERRA DE LAS GALAXIAS : un metodo que proporciona la comparación de mayor, mayor igual, menor, menor igual

# File lib/modai_prct12/racional.rb, line 109
def <=>(o)
  return nil unless o.instance_of? Racional
  (num.to_f / denom) <=> (o.num.to_f / o.denom)
end
==(o) click to toggle source

comparar que dos fracciones son iguales

# File lib/modai_prct12/racional.rb, line 30
def ==(o)
  if o.instance_of? Racional
      @num == o.num && @denom == o.denom
  else
      false
  end
end
abs() click to toggle source

Calcular el valor absoluto de una fraccion con el metodo abs

# File lib/modai_prct12/racional.rb, line 44
def abs
  Racional.new(num.abs, denom.abs)
end
coerce(other) click to toggle source

El metodo coerce para onvierte el valor especificado en el tipo especificado.

# File lib/modai_prct12/racional.rb, line 115
def coerce(other)
  return Racional.new(other,1), self
end
reciprocal() click to toggle source

calcular el reciproco de una fraccion con el metodo reciprocal

# File lib/modai_prct12/racional.rb, line 49
def reciprocal
  Racional.new(denom, num)
end
to_f() click to toggle source

Mostar la fraccion en formato flotante

# File lib/modai_prct12/racional.rb, line 39
def to_f
  num.to_f/denom
end
to_s() click to toggle source

mostar por la consola la fraccion de la forma: a/b

# File lib/modai_prct12/racional.rb, line 25
def to_s
  "#{num}/#{denom}"
end