Help I am completely new to ruby and to OO programming. Why-does my code not compile??

class Quadratic

def findroots()

b = (ARGV[0])

c = (ARGV[1])

$stdout.print("You entered " , ARGV[1], ARGV[0], "\n")

discriminant = b * b - 4.0 * c

sqroot = Math.sqrt(discriminant)

root1 = (-b + sqroot) / 2.0

root2 = (-b - sqroot) / 2.0

$stdout.print(root1)

$stdout.print(root2)

end

end

if __FILE__ == $0

qf = Quadratic.new

qf.findroots

end

Help I am completely new to ruby and to OO programming. Why-does my code

not compile??

class Quadratic

def findroots()

b = (ARGV[0])

c = (ARGV[1])

$stdout.print("You entered " , ARGV[1], ARGV[0], "\n")

discriminant = b * b - 4.0 * c

sqroot = Math.sqrt(discriminant)

root1 = (-b + sqroot) / 2.0

root2 = (-b - sqroot) / 2.0

$stdout.print(root1)

$stdout.print(root2)

end

end

if __FILE__ == $0

qf = Quadratic.new

qf.findroots

end

Hi,

First, please, next time post the exact error message. You'll save

people that want to help you some investigation.

If the folowing message is similar to your error:

W:/var/x.rb:7:in `*': can't convert String into Integer (TypeError)

from W:/var/x.rb:7:in `findroots'

from W:/var/x.rb:21

then you're trying to multiply numbers by strings.

Replace

b = (ARGV[0])

c = (ARGV[1])

by

b = ARGV[0].to_f

c = ARGV[1].to_f

to_f will convert string to float. For more info, read the docs of

String#to_f and possibly the whole String class

(e.g. using RI or http://ruby-doc.org/core/)

If the message is different, please post it and will see.

Jano

## ···

On Mon, Feb 25, 2008 at 3:18 PM, Christian Rubio <chris.rubio.osv@fedex.com> wrote:

Jano Svitok wrote:

Help I am completely new to ruby and to OO programming. Why-does my code

not compile??

Replace

b = (ARGV[0])

c = (ARGV[1])

by

b = ARGV[0].to_f

c = ARGV[1].to_f

to_f will convert string to float. For more info, read the docs of

String#to_f and possibly the whole String class

(e.g. using RI or http://ruby-doc.org/core/)

If the message is different, please post it and will see.

Jano

Hi Thanks for your help and directions. I made the above substitutions and now I get the following error

% ruby quadratic.rb 1.0 1.0

You entered 1.0 1.0

quadratic.rb:17:in `sqrt': Numerical argument out of domain - sqrt (Errno::EDOM)

from quadratic.rb:17:in `findroots'

from quadratic.rb:30

Here is my program,

#!/usr/bin/env ruby

## ···

On Mon, Feb 25, 2008 at 3:18 PM, Christian Rubio > <chris.rubio.osv@fedex.com> wrote:

###########################

##

## program that solve quadratic equation

##

###########################

class Quadratic

def findroots()

b = (ARGV[0].to_f)

c = (ARGV[1].to_f)

$stdout.print("You entered " , ARGV[1]," ", ARGV[0], "\n")

discriminant = b * b - 4.0 * c

sqroot = Math.sqrt(discriminant)

root1 = (-b + sqroot) / 2.0

root2 = (-b - sqroot) / 2.0

$stdout.print(root1)

$stdout.print(root2)

end

end

if __FILE__ == $0

qf = Quadratic.new

qf.findroots

end

That means you passed a number that has no real square root, for example -1.

Refresh your high school math and check the discriminant before you

call Math.sqrt

Otherwise, require 'complex'

Jano

## ···

On Mon, Feb 25, 2008 at 3:53 PM, Christian Rubio <chris.rubio.osv@fedex.com> wrote:

Jano Svitok wrote:

> On Mon, Feb 25, 2008 at 3:18 PM, Christian Rubio > > <chris.rubio.osv@fedex.com> wrote:

>

>> Help I am completely new to ruby and to OO programming. Why-does my code

>> not compile??

>>

>>

> Replace

>

>> b = (ARGV[0])

>> c = (ARGV[1])

>>

> by

> b = ARGV[0].to_f

> c = ARGV[1].to_f

> to_f will convert string to float. For more info, read the docs of

> String#to_f and possibly the whole String class

> (e.g. using RI or http://ruby-doc.org/core/)

>

> If the message is different, please post it and will see.

>

> Jano

>

>

Hi Thanks for your help and directions. I made the above substitutions

and now I get the following error

% ruby quadratic.rb 1.0 1.0

You entered 1.0 1.0

quadratic.rb:17:in `sqrt': Numerical argument out of domain - sqrt

(Errno::EDOM)

from quadratic.rb:17:in `findroots'

from quadratic.rb:30

Christian Rubio wrote:

quadratic.rb:17:in `sqrt': Numerical argument out of domain - sqrt

(Errno::EDOM)

from quadratic.rb:17:in `findroots'

from quadratic.rb:30

This means that your argument to sqrt is negative.

What values for b and c did you supply?

HTH,

Sebastian

## ···

--

NP: Anathema - Cries On The Wind

Jabber: sepp2k@jabber.org

ICQ: 205544826

Sebastian Hungerecker wrote:

Christian Rubio wrote:

quadratic.rb:17:in `sqrt': Numerical argument out of domain - sqrt

(Errno::EDOM)

from quadratic.rb:17:in `findroots'

from quadratic.rb:30

This means that your argument to sqrt is negative.

What values for b and c did you supply?

HTH,

Sebastian

Thanks all for your replies. The input was invalid. I need to check for legal input.

But I am new and just learning. Still trying to figure out whats going on here.

The docs are hard to understand. So I am programming very basically.

Thanks so much

Chris