Woah, this is my 3rd post in like an hour. Must be really annoying for
the guys who are answering.
Well, in this program after inputting the value the program doesn’t
respond or do anything. On pressing ‘ctrl+c’, it shows some ‘interrupt’
error.
Thanks for your help. I am still in the very basic stage of ruby.
On Mon, Jul 27, 2009 at 2:07 PM, Prateek A.[email protected]
wrote:
Woah, this is my 3rd post in like an hour. Must be really annoying for
the guys who are answering.
Well, in this program after inputting the value the program doesn’t
respond or do anything. On pressing ‘ctrl+c’, it shows some ‘interrupt’
error.
Thanks for your help. I am still in the very basic stage of ruby.
Just a general suggestion, try adding a few print statements to give
you a better idea of the internal state of the code. For example:
def factorial(x)
puts “factorial{#{x})”
. . .
def power(a,b)
puts “Entering power():”
p a, b
. . .
def add(k)
puts “#{Time.now}\tadd()”; p k
. . .
i=i+1
if (i==k) then
puts sum
. . .
else
p i
end
. . .
At 2009-07-27 02:07PM, “Prateek A.” wrote:
Woah, this is my 3rd post in like an hour. Must be really annoying for
the guys who are answering.
Well, in this program after inputting the value the program doesn’t
respond or do anything. On pressing ‘ctrl+c’, it shows some ‘interrupt’
error.
Thanks for your help. I am still in the very basic stage of ruby.
Attachments:
http://www.ruby-forum.com/attachment/3907/Question1.rb
You’d better not use k == 0. You’ll hit an infinite loop in add()
You might want to use: if i >= k then …
Add more trace statements while testing.
Here’s a version without the “loop” statements
def factorial(x)
result = 1
x.downto(2) {|i| result *= i}
result
# or:
# (1..x).inject(1, :*)
end
def power(a,b)
result = 1
b.times {result *= a}
result
# or simply:
# a ** b
end
def add(k)
sum = 0.0
k.times do |i|
n1 = factorial(4*i)
n2 = 1103+(26390*i)
d1 = power(factorial(i),4)
d2 = power(396,(4*i))
sum += 1.0*(n1*n2)/(d1*d2)
end
sum
end
Thanks guys. I was able to solve the problem. Cheers.