>
>> puts ""
>> puts "Conversion Program"
>> puts "------------------\n"
>>
>> puts "Would you like to convert:"
>> puts "1. F to C"
>> puts "2. C to F"
>> puts"Enter your choice now: "
>> choice = gets.chomp.to_i
>>
>> if choice == 1
>>   puts "Enter a temperature in F:"
>>   fahr = gets.chomp.to_f
>>   cent = ( (fahr - 32) / 1.8 )
>>   puts fahr.to_s + " F is " + cent.round.to_s + " C."
>>
>> elsif choice == 2
>>   puts "Enter a temperature in C:"
>>   cent = gets.chomp.to_f
>>   fahr = ( (cent * 1.8) + 32 )
>>   puts cent.to_s + " C is " + fahr.round.to_s + " F."
>> else
>>   puts "That is a not a valid choice.  Good bye!"
>> end
>>
>
> I'm using Ruby, but I'll take a stab at it (learn from my mistakes).
>
> Well, I started off OK (using classes for temp conversion) and then 
> things got ugly (probably putting too much in the manager class).
>
> At any rate, here it is. (aka, here's how not to do it. ;-)
>
>
> #! /usr/bin/env ruby
>
> class TemperatureConverter
>   attr_reader :from_unit, :to_unit, :conversion
>
>   def initialize( from_unit='', to_unit='', conversion=proc {|x| x } )
>     @from_unit = from_unit
>     @to_unit = to_unit
>     @conversion = conversion
>   end
>
>   def convert( arg )
>     @conversion.call( arg )
>   end
> end
>
> class FahrenheitToCelsiusConverter < TemperatureConverter
>   def initialize
>     super( 'F', 'C', proc {|f| (f - 32.0) / 1.8 } )
>   end
> end
>
> class CelsiusToFahrenheitConverter < TemperatureConverter
>   def initialize
>     super( 'C', 'F', proc {|c| (c * 1.8) + 32 } )
>   end
> end
>
> class TemperatureConversionManager
>   attr_reader :prompt
>   def initialize( *converters )
>     @converters = converters
>     @prompt = <<END_OF_PROMPT
>
> Conversion Program
> ------------------
> Would you like to convert:
> END_OF_PROMPT
>
>     index = 0
>     @prompt += @converters.map do |converter|
>       "#{index += 1}. #{converter.from_unit} to #{converter.to_unit}"
>     end.join( "\n" )
>     @prompt += "\nEnter your choice now: "
>   end
>
>   def run
>     print prompt
>     user_choice = choose_converter - 1
>     if user_choice < 0 or user_choice >= @converters.size
>       puts "That is not a valid choice. Goodbye."
>     else
>       prompt_and_display_conversion( @converters[ user_choice ] )
>     end
>   end
>
>   def choose_converter
>     gets.chomp.to_i
>   end
>
>   def get_temperature
>     gets.chomp.to_f
>   end
>
>   def temperature_prompt( converter )
>     "Please enter temperature in #{converter.from_unit}: "
>   end
>
>   def prompt_and_display_conversion( converter )
>     print temperature_prompt( converter )
>     user_input = get_temperature
>     converted_temp = converter.convert( user_input )
>     puts <<END_OF_RESULTS
> #{user_input} #{converter.from_unit} is #{converted_temp} 
> #{converter.to_unit}
> END_OF_RESULTS
>   end
> end
>
> TemperatureConversionManager.new(
>   FahrenheitToCelsiusConverter.new,
>   CelsiusToFahrenheitConverter.new
> ).run
>
>
>
> Corrections / advice / criticisms are welcome.
> (I think that I prefer the original version.)
>
> Richard
>
>

s/^I'm using Ruby/I'm new to using Ruby/

Sorry.