class Math::Fraccion

Clase que permite representar un número fraccionario y hacer las operaciones básicas.

Attributes

denom[RW]
num[RW]

Public Class Methods

new(n, d) click to toggle source

método que llama al constructor del objeto de la clase

# File lib/matrix_disp.rb, line 43
def initialize(n, d) 
  @num = n
  @denom = d
  gcd
end

Public Instance Methods

%(other) click to toggle source

método que devuelve el módulo de la fracción actual con la que se pasa como parámetro

# File lib/matrix_disp.rb, line 106
def %(other)
  other.reciprocal
  a = Fraccion.new(@num*other.num, @denom*other.denom)
  a.num % a.denom
end
*(other) click to toggle source

método que devuelve la multiplicación de la fracción actual con la que se pasa como parámetro

# File lib/matrix_disp.rb, line 97
def *(other)
  Fraccion.new(@num*other.num, @denom*other.denom)
end
+(other) click to toggle source

método que devuelve la suma de la fracción actual con la que se pasa como parámetro

# File lib/matrix_disp.rb, line 89
def +(other)
  Fraccion.new((@num*other.denom)+(@denom*other.num), @denom*other.denom)
end
-(other) click to toggle source

método que devuelve la resta de la fracción actual con la que se pasa como parámetro

# File lib/matrix_disp.rb, line 93
def -(other)
  Fraccion.new((@num*other.denom)-(@denom*other.num), @denom*other.denom)
end
-@() click to toggle source

método que calcula el inverso de la fracción

# File lib/matrix_disp.rb, line 85
def -@               
  @num = -@num
end
/(other) click to toggle source

método que devuelve la división de la fracción actual con la que se pasa como parámetro

# File lib/matrix_disp.rb, line 101
def /(other)
  other.reciprocal
  Fraccion.new(@num*other.num, @denom*other.denom)
end
<=>(other) click to toggle source

método de la guerra de las galaxias que permite los tipos de comparación ==, <, >, <=, >=

# File lib/matrix_disp.rb, line 119
def <=>(other)
            (@num.to_f/@denom.to_f) <=> (other.num.to_f/other.denom.to_f)
end
==(o) click to toggle source

método que devuelve true si la fracción con la que se compara es igual a la actual

# File lib/matrix_disp.rb, line 69
def ==(o)
  return @num == o.num && @denom  == o.denom if o.instance_of? Fraccion
  false
end
abs() click to toggle source

método que calcula el valor absoluto de la fracción

# File lib/matrix_disp.rb, line 74
def abs
  @denom = @denom.abs
  @num = @num.abs
end
coerce(other) click to toggle source

método para permitir las operaciones desde otros tipos de datos con Fraccion

# File lib/matrix_disp.rb, line 39
def coerce(other)
  [self, other]
    end
divReciprocal(other) click to toggle source

método que calcula el recíproco de una fracción

# File lib/matrix_disp.rb, line 112
    def divReciprocal(other)
            other.reciprocal
            a = Fraccion.new(@num*other.num, @denom*other.denom)
            a.reciprocal
            a
end
gcd() click to toggle source

método que reduce la fracción calculando el mcd y dividiendolo entre el numerador y el denominador

# File lib/matrix_disp.rb, line 49
def gcd
  mcd, v = @num.abs, @denom.abs
  while v > 0
    mcd, v = v, mcd % v
  end
  @num = @num/mcd
  @denom = @denom/mcd
end
reciprocal() click to toggle source

método que calcula el recíproco de la fracción.

# File lib/matrix_disp.rb, line 79
def reciprocal
  tmpNumerador = @num
  @num = @denom
  @denom = tmpNumerador
end
to_f() click to toggle source
# File lib/matrix_disp.rb, line 61
def to_f
  @num.to_f/@denom.to_f
end
to_s() click to toggle source

método que muestra la fracción en la forma a/b

# File lib/matrix_disp.rb, line 58
def to_s
  "#{@num}/#{@denom}"
end
to_sf() click to toggle source

método que muestra la fracción en la forma a/b en flotante

# File lib/matrix_disp.rb, line 65
def to_sf
  "#{@num.to_f}/#{@denom.to_f}"
end