Hello all, I need help to modify this code to do the following: 1. Modify MegaGr
ID: 3541559 • Letter: H
Question
Hello all,
I need help to modify this code to do the following:
1. Modify MegaGreeter print statements to say (i.e, "Hellow John, my name is Sam") instead of just "Hello..."
2. Modify the output so that after each printout of "Hello...", it says "(Only <x> days until the end of the semester!". You will need to use the Date class to determine how to do this calculation. It should NOT be hardcoded, but instead look at the current day and do the calculation accordingly
I have tried to modify the code, but i am having trouble setting up properly (still new at Ruby). At the bottom I pasted what I got so far. Please take a look, and show me what can be done to modify this code properly.
Thank you :)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Here is the original code
#!/usr/bin/env ruby
class MegaGreeter
attr_accessor :names
# Create the object
def initialize(names = "World")
@names = names
end
# Say hi to everybody
def say_hi
if @names.nil?
puts "..."
elsif @names.respond_to?("each")
# @names is a list of some kind, iterate!
@names.each do |name|
puts "Hello #{name}!"
end
else
puts "Hello #{@names}!"
end
end
# Say bye to everybody
def say_bye
if @names.nil?
puts "..."
elsif @names.respond_to?("join")
# Join the list elements with commas
puts "Goodbye #{@names.join(", ")}. Come back soon!"
else
puts "Goodbye #{@names}. Come back soon!"
end
end
end
if __FILE__ == $0
mg = MegaGreeter.new
mg.say_hi
mg.say_bye
# Change name to be "Zeke"
mg.names = "Zeke"
mg.say_hi
mg.say_bye
# Change the name to an array of names
mg.names = ["Albert", "Brenda", "Charles",
"Dave", "Engelbert"]
mg.say_hi
mg.say_bye
# Change to nil
mg.names = nil
mg.say_hi
mg.say_bye
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Result of the Original Code :
Hello World!
Goodbye World. Come back soon!
Hello Zeke!
Goodbye Zeke. Come back soon!
Hello Albert!
Hello Brenda!
Hello Charles!
Hello Dave!
Hello Engelbert!
Goodbye Albert, Brenda, Charles, Dave, Engelbert. Come back soon!
...
...
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
This is what I have modified so far:
#!/usr/bin/env ruby
require 'date'
class MyMegaGreeter
attr_accessor :names
# Practice 2
def say_remaining_days
days_till_end = Date.new(2013, 12, 20) - Date.today
days_till_end.to_i # => this will give u a number
print "Hello Only #{days_till_end.to_i} days until end of the semester!"
end
# Create the object
def initialize(names = "John, my name is Sam")
@names = names
end
# Say hi to everybody
def say_hi
if @names.nil?
puts "..."
elsif @names.respond_to?("each")
# @names is a list of some kind, iterate!
@names.each do |name|
puts "Hello #{name}!"
end
else
puts "Hello #{@names}!"
end
end
# Say bye to everybody
def say_bye
if @names.nil?
puts "..."
elsif @names.respond_to?("join")
# Join the list elements with commas
puts "Goodbye #{@names.join(", ")}. Come back soon!"
else
puts "Goodbye #{@names}. Come back soon!"
end
end
end
if __FILE__ == $0
mg = MegaGreeter.new
mg.say_hi
mg.say_bye
# Change name to be "Zeke"
mg.names = "Zeke"
mg.say_hi
mg.say_bye
# Change the name to an array of names
mg.names = ["Albert", "Brenda", "Charles",
"Dave", "Engelbert"]
mg.say_hi
mg.say_bye
# Change to nil
mg.names = nil
mg.say_hi
mg.say_bye
mg.say_remaining_days
end
Explanation / Answer
see here
http://pastebin.com/5j8dkNay
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.