> 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