Pine's book "Learning to Program" - Answer?

W

woodyee

Hi! I'm stuck on Chapter 5, 5.4:

"Write a program which asks for a person's favorite number. Have your
program add one to the number, then suggest the result as a bigger and
better favorite number. (Do be tactful about it, though.)".

Any ideas? I'm getting "can't convert fixnum into string" errors.
Here's one of the many things I've tried, er, failed:

puts 'What is your favorite number ?'
num = gets.chomp
better = 'num'.to_i + 1
puts 'This is better: ' + better + '.'

3rd line's getting me. Can't figure out how to add 1 to the response.
Hopefully, I'll figure this out but any tips are welcomed. Thanks!
 
M

Mando Escamilla

------=_Part_10556_11407558.1141098129051
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

You're close.

better is a fixnum (like the error says). In order to add it to the string=
,
you'll need to convert it to a string. Luckily, ruby gives you a nice and
easy way to do it:

better.to_s will return the string version of better.

So, this makes the last line:

puts ' This is better: ' + better.to_s + '.'

Give that a shot.

--
Mando

Hi! I'm stuck on Chapter 5, 5.4:

"Write a program which asks for a person's favorite number. Have your
program add one to the number, then suggest the result as a bigger and
better favorite number. (Do be tactful about it, though.)".

Any ideas? I'm getting "can't convert fixnum into string" errors.
Here's one of the many things I've tried, er, failed:

puts 'What is your favorite number ?'
num =3D gets.chomp
better =3D 'num'.to_i + 1
puts 'This is better: ' + better + '.'

3rd line's getting me. Can't figure out how to add 1 to the response.
Hopefully, I'll figure this out but any tips are welcomed. Thanks!

------=_Part_10556_11407558.1141098129051--
 
J

James Edward Gray II

Hi! I'm stuck on Chapter 5, 5.4:

"Write a program which asks for a person's favorite number. Have your
program add one to the number, then suggest the result as a bigger and
better favorite number. (Do be tactful about it, though.)".

Any ideas? I'm getting "can't convert fixnum into string" errors.
Here's one of the many things I've tried, er, failed:

puts 'What is your favorite number ?'
num = gets.chomp
better = 'num'.to_i + 1

There's your problem line.

'num' is a String of the letters n, u, and m. num is the variable
holding the number.

Drop the quotes here.
puts 'This is better: ' + better + '.'

This line will be another problem. better will hold an Integer, but
you want a String here. Try better.to_s instead.
3rd line's getting me. Can't figure out how to add 1 to the response.
Hopefully, I'll figure this out but any tips are welcomed. Thanks!

Hope that helps.

Welcome to Ruby!

James Edward Gray II
 
J

Jeff McNeil

Also, I believe the line that that reads 'num'.to_i return zero as
you're asking the literal 'num' to return it's integer value. Try it
without those quotes.

-Jeff
 
G

Gregor Kopp

puts "Whats your favourite number?"
num = gets.to_i
puts "This is better: #{num+1}"
 
W

woodyee

Thanks! NOW, I think I get it. Here's my program:

# Write a program which asks for a person's favorite number. Have your
#program add one to the number, then suggest the result as a bigger and

#better favorite number.


puts "What is your favorite number? "
num = gets.chomp
better = num.to_i + 1
puts 'This is a better number: ' + better.to_s + '.'


Gregor's solution is compact (good thing) but it's too advanced for me
now. :)
What is it? Looks like a Python concocted commented out dictionary to
me... :)
Thanks again!
 
D

dblack

Hi --

Thanks! NOW, I think I get it. Here's my program:

# Write a program which asks for a person's favorite number. Have your
#program add one to the number, then suggest the result as a bigger and

#better favorite number.


puts "What is your favorite number? "
num = gets.chomp
better = num.to_i + 1
puts 'This is a better number: ' + better.to_s + '.'


Gregor's solution is compact (good thing) but it's too advanced for me
now. :)
What is it? Looks like a Python concocted commented out dictionary to
me... :)
Thanks again!

Gregor is using string interpolation, to insert the expression num + 1
into the output string. String interpolation works like this:

"This is a string with #{2 + 2} inside it."

which will print:

This is a string with 4 inside it.


David

--
David A. Black ([email protected])
Ruby Power and Light (http://www.rubypowerandlight.com)

"Ruby for Rails" chapters now available
from Manning Early Access Program! http://www.manning.com/books/black
 
G

Gregor Kopp

1.) if you do a .to_i to num, you dont need to chomp it.
2.) if you make 'num'.to_i you try to transform the string num into
integer. it should be num.to_i, because you want the value of num and
not "num".
3.) #{expression} in string will be replaced with its value in that string.
try

(1..10).each do |number|
puts "Hallo there, Number #{number}!"
end

hope that helped ;)

sorry about my english, i know it sucks alot!
 
D

dblack

Hi --

1.) if you do a .to_i to num, you dont need to chomp it.
2.) if you make 'num'.to_i you try to transform the string num into integer.
it should be num.to_i, because you want the value of num and not "num".
3.) #{expression} in string will be replaced with its value in that string.
try

And of course there's always:

puts "What's you're favorite number?"
puts "This is better: #{gets.to_i + 1}"

:)


David

--
David A. Black ([email protected])
Ruby Power and Light (http://www.rubypowerandlight.com)

"Ruby for Rails" chapters now available
from Manning Early Access Program! http://www.manning.com/books/black
 
G

Gregor Kopp

Try also this to get the feel how it works:

num = "1"
puts 'puts "num"'
puts "num"
puts 'puts num'
puts num
puts 'puts "#{num}"'
puts "#{num}"
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,586
Members
45,086
Latest member
ChelseaAmi

Latest Threads

Top