Class: Fraccion

Inherits:
Object
  • Object
show all
Defined in:
lib/racional.rb

Overview

clase para definir el objeto fraccion

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(numerador, denominador) ⇒ Fraccion

Funcion initialize



18
19
20
21
22
# File 'lib/racional.rb', line 18

def initialize(numerador, denominador)
    mcd = gcd(numerador, denominador) #Minimo comun divisor
    @num = numerador/mcd
    @den = denominador/mcd
end

Instance Attribute Details

#denObject

nos permite el uso de los getter y setter sobre num y den



11
12
13
# File 'lib/racional.rb', line 11

def den
  @den
end

#numObject

nos permite el uso de los getter y setter sobre num y den



11
12
13
# File 'lib/racional.rb', line 11

def num
  @num
end

Instance Method Details

#%(fraccion) ⇒ Object

Funcion para calcular el resto de dos fracciones



90
91
92
# File 'lib/racional.rb', line 90

def %(fraccion)
   re = @num * fraccion.den % @den * fraccion.num
end

#*(dato) ⇒ Object

Fucion para multiplicar dos fracciones



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/racional.rb', line 72

def *(dato)
  if (dato.class == Fraccion)
	n = dato.num * @num
	d = dato.den * @den
	Fraccion.new(n,d)
  else
	n = dato * @num
	d = @den
	Fraccion.new(n,d)
  end
end

#+(dato) ⇒ Object

Fucion para sumar dos fracciones o un escalar con una fraccion



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/racional.rb', line 48

def +(dato)
  if (dato.class == Fraccion)
	n = dato.num * @den + dato.den * @num
	d = @den * dato.den
	Fraccion.new(n,d)
  else
	n = (dato * @den) + @num
	d = @den
	Fraccion.new(n,d)
  end 
end

#-(dato) ⇒ Object

Fucion para restar dos fracciones o restar un escalar con una fraccion



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/racional.rb', line 60

def -(dato)
  if(dato.class == Fraccion)
	n = dato.den * @num - dato.num * @den
	d = @den * dato.den
	Fraccion.new(n,d)
  else
	n = (dato * @den) - @num
	d = @den
	Fraccion.new(n,d)
  end
end

#-@Object

Fucion para calcular el inverso de una fraccion



44
45
46
# File 'lib/racional.rb', line 44

def -@
  Fraccion.new(-@num,@den)
end

#/(fraccion) ⇒ Object

Funcion para dividir dos fracciones



84
85
86
87
88
# File 'lib/racional.rb', line 84

def /(fraccion) #/
   n = fraccion.den * @num
   d = fraccion.num * @den
   Fraccion.new(n,d)
end

#<=>(fraccion) ⇒ Object

Funcion operador guerra de las galaxias



94
95
96
97
98
99
100
101
102
103
104
# File 'lib/racional.rb', line 94

def <=>(fraccion)
   if (@num * fraccion.den < @den * fraccion.num)
         return -1
   end
   if (@num * fraccion.den > @den * fraccion.num)
  return 1
   end
   if(@num * fraccion.den == @den * fraccion.num)
         return 0
   end
end

#==(fraccion) ⇒ Object

Fucion para comparar dos fracciones



32
33
34
# File 'lib/racional.rb', line 32

def ==(fraccion)
  return @num == fraccion.num && @den == fraccion.den
end

#absObject

Fucion para transformar una fraccion a su valor absoluto



36
37
38
# File 'lib/racional.rb', line 36

def abs
  Fraccion.new(@num.abs,@den.abs)
end

#coerce(dato) ⇒ Object



13
14
15
# File 'lib/racional.rb', line 13

def coerce (dato)
  [self, dato]
end

#reciprocoObject

Funcion para obtener el reciproco de un fraccion



40
41
42
# File 'lib/racional.rb', line 40

def reciproco
  Fraccion.new(@den,@num)
end

#to_fObject

Fucion para devolver un flotante



28
29
30
# File 'lib/racional.rb', line 28

def to_f
  return @num/@den.to_f
end

#to_sObject

Funcion para devolver un string



24
25
26
# File 'lib/racional.rb', line 24

def to_s
   return "#{@num}/#{@den}"
end