Please debug this program

Discussion in 'Ruby' started by Prateek Agarwal, Jul 25, 2009.

  1. Prateek Agarwal, Jul 25, 2009
    #1
    1. Advertising

  2. Prateek Agarwal

    Guest

    On Sat, Jul 25, 2009 at 4:02 PM, Prateek Agarwal<> wrote:
    > I had to make a program to estimate the value of pi using Ramanujan's
    > method.
    >
    > I have made the program but it is giving the following error
    >
    > Question1.rb:8:in 'factorial':Interrupt
    >
    > where 'factorial' is the name of the method and Question1.rb is the file
    > name.


    Try this snippet, do you see the problem here?

    def add(k)
    i = 0
    loop {
    i += 1
    if (i == k) then
    return i
    else
    p i, k
    end
    sleep 1
    }
    end

    k = gets
    p add(k)
    , Jul 25, 2009
    #2
    1. Advertising

  3. Prateek Agarwal wrote:
    > I had to make a program to estimate the value of pi using Ramanujan's
    > method.
    >
    > I have made the program but it is giving the following error
    >
    > Question1.rb:8:in 'factorial':Interrupt


    You pressed ctrl-C?

    I'm surprised it even ran at all:

    def factorial(x)
    if (x==0) then
    return (1)
    end
    else
    ... something else

    This doesn't make sense syntactically - an 'else' without an 'if'. You
    need:

    if x == 0
    return 1
    else
    ... something else
    end
    --
    Posted via http://www.ruby-forum.com/.
    Brian Candler, Jul 26, 2009
    #3
  4. Prateek Agarwal

    Guest

    On Sat, Jul 25, 2009 at 7:24 PM, Brian Candler<> wrote:
    > I'm surprised it even ran at all:
    >
    > def factorial(x)
    > =A0if (x=3D=3D0) then
    > =A0 =A0return (1)
    > =A0 =A0end
    > =A0 =A0else
    > =A0 =A0 =A0... something else
    >
    > This doesn't make sense syntactically - an 'else' without an 'if'.


    An 'else' can live inside a method or a begin...end:

    > ruby y

    y:6: warning: else without rescue is useless
    FOO
    ELSE
    FOO
    y:3:in `foo': FOO (RuntimeError)
    from y:9

    > cat y

    def foo(n)
    puts "FOO"
    raise "FOO" if n
    rescue
    puts "RESCUE"
    else
    puts "ELSE"
    end

    foo(false)
    foo(true)
    > ruby y

    FOO
    ELSE
    FOO
    RESCUE


    http://rubycentral.com/pickaxe/tut_exceptions.html
    "The else clause is a similar, although less useful, construct. If
    present, it goes after the rescue clauses and before any ensure. The
    body of an else clause is executed only if no exceptions are raised by
    the main body of code."
    , Jul 26, 2009
    #4
  5. Ugh, thanks - I'd forgotten the use of 'else' as part of a rescue, and
    the implicit begin/end around a method body.

    >> ruby y

    > y:6: warning: else without rescue is useless


    Matz send years ago that he regretted not making -w the default.
    --
    Posted via http://www.ruby-forum.com/.
    Brian Candler, Jul 26, 2009
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. RonL
    Replies:
    0
    Views:
    718
  2. KK
    Replies:
    2
    Views:
    498
    Big Brian
    Oct 14, 2003
  3. ringos75
    Replies:
    0
    Views:
    929
    ringos75
    Apr 14, 2005
  4. Mike C. Fletcher
    Replies:
    3
    Views:
    965
    =?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=
    Oct 12, 2003
  5. asit
    Replies:
    4
    Views:
    284
    Arved Sandstrom
    Jun 23, 2008
Loading...

Share This Page