Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote