class Math::Fraccion
Clase que permite representar un número fraccionario y hacer las operaciones básicas.
Attributes
Public Class Methods
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
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
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
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
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
método que calcula el inverso de la fracción
# File lib/matrix_disp.rb, line 85 def -@ @num = -@num end
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
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
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
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
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
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
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
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
# File lib/matrix_disp.rb, line 61 def to_f @num.to_f/@denom.to_f end
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
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