Class: Racional
- Inherits:
-
Object
show all
- Includes:
- Comparable
- Defined in:
- lib/modai_prct12/racional.rb
Overview
Implemente una clase Ruby para representar los números racionales.
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(num, denom) ⇒ Racional
11
12
13
14
15
16
17
18
19
|
# 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
|
Instance Attribute Details
#denom ⇒ Object
Gets y Sets de @num y @denom
22
23
24
|
# File 'lib/modai_prct12/racional.rb', line 22
def denom
@denom
end
|
#num ⇒ Object
Gets y Sets de @num y @denom
22
23
24
|
# File 'lib/modai_prct12/racional.rb', line 22
def num
@num
end
|
Instance Method Details
#%(o) ⇒ Object
99
100
101
102
103
104
105
106
|
# 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) ⇒ Object
79
80
81
82
83
84
85
86
|
# 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) ⇒ Object
59
60
61
62
63
64
65
66
|
# 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) ⇒ Object
69
70
71
72
73
74
75
76
|
# 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
|
#-@ ⇒ Object
Calcular el opuesto de una fraccion con -
54
55
56
|
# File 'lib/modai_prct12/racional.rb', line 54
def -@
Racional.new(-denom, num)
end
|
#/(o) ⇒ Object
89
90
91
92
93
94
95
96
|
# 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) ⇒ Object
GERRA DE LAS GALAXIAS : un metodo que proporciona la comparación de mayor, mayor igual, menor, menor igual
109
110
111
112
|
# 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) ⇒ Object
comparar que dos fracciones son iguales
30
31
32
33
34
35
36
|
# 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 ⇒ Object
Calcular el valor absoluto de una fraccion con el metodo abs
44
45
46
|
# File 'lib/modai_prct12/racional.rb', line 44
def abs
Racional.new(num.abs, denom.abs)
end
|
#coerce(other) ⇒ Object
El metodo coerce para onvierte el valor especificado en el tipo especificado.
115
116
117
|
# File 'lib/modai_prct12/racional.rb', line 115
def coerce(other)
return Racional.new(other,1), self
end
|
#reciprocal ⇒ Object
calcular el reciproco de una fraccion con el metodo reciprocal
49
50
51
|
# File 'lib/modai_prct12/racional.rb', line 49
def reciprocal
Racional.new(denom, num)
end
|
#to_f ⇒ Object
39
40
41
|
# File 'lib/modai_prct12/racional.rb', line 39
def to_f
num.to_f/denom
end
|
#to_s ⇒ Object
25
26
27
|
# File 'lib/modai_prct12/racional.rb', line 25
def to_s
"#{num}/#{denom}"
end
|