Retro thanks to all who helped me with my last post. I’m certainly more
comfortable with Ruby now than then, but still a newbie as the following
will surely demonstrate.
Below, you can see that I’m checking command-line arguments to the
program for various conditions. Unfortunately, because the args are
stored as strings, when I convert them via to_i, empty and non-numerical
strings become 0. 0 is an acceptable element in this program, therefore
I can’t use it to test for invalid input. I’ve worked around this (sort
of), by creating two sets of variables for the arguments (one set as
strings, one set as integers). Unfortunately, this complicates the
code, and more importantly, leaves me stumped concerning how to test for
non-numeric values.
So, the program does what I want, except when the args are non-numeric
strings, and the code seems uglier than it ought to be.
Thanks in advance,
-ELf
def gen_chart(max)
x=0
y=0
local_chart = Array.new
while x<=max
y+=x
local_chart[x]=y
x+=1
end
local_chart
end
arg0 = ARGV[0]
arg1 = ARGV[1]
arg0i = ARGV[0].to_i
arg1i = ARGV[1].to_i
if arg0.nil? or (arg0i < 0) or (arg1i < 0)
#print usage
print <<-EOS
No args, or bad args!
Usage: #$0 [maxvalue]
#$0 [minvalue] [maxvalue]
EOS
elsif arg1.nil?
#do chart to arg0, print last pair
chart = gen_chart(arg0i)
puts arg0i.to_s + ": " + chart[arg0i].to_s
else
#do chart to arg1, print pairs from arg0 to last
chart = gen_chart(arg1i)
x=arg0i
y=arg1i
while x<=y
puts x.to_s + ": " + chart[x].to_s
x+=1
end
end