Created
July 27, 2016 11:41
Chalenge solution
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Globalization; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace DegreeConverter | |
{ | |
public class TemperatureConverter | |
{ | |
private Convert _convert; | |
public TemperatureConverter(Convert convert) | |
{ | |
_convert = convert; | |
} | |
internal object CelsiusToFahrenheit() | |
{ | |
return $"{_convert._converter.value * 1.8 + 32}f"; | |
} | |
public object FahrenheitToCelsius() | |
{ | |
var s = ((_convert._converter.value - 32)*0.56).ToString("N2", CultureInfo.InvariantCulture); | |
if (s.EndsWith(".00")) | |
{ | |
return $"{s.Replace(".00", "")}c"; | |
} | |
return $"{s}c"; | |
} | |
} | |
public class DegreeConverter | |
{ | |
private Convert _convert; | |
public DegreeConverter(Convert convert) | |
{ | |
_convert = convert; | |
} | |
internal object DegreesToRadians() | |
{ | |
var s = (_convert._converter.value*(Math.PI/180)).ToString("N2", CultureInfo.InvariantCulture); | |
if (s.EndsWith(".00")) | |
{ | |
return $"{s.Replace(".00", "")}r"; | |
} | |
return $"{s}r"; | |
} | |
internal object RadiansToDegrees() | |
{ | |
return $"{System.Convert.ToInt32(_convert._converter.value*(180/Math.PI))}d"; | |
} | |
} | |
public class Convert | |
{ | |
internal Converter _converter; | |
private readonly TemperatureConverter _temperatureConverter; | |
private readonly DegreeConverter _degreeConverter; | |
public Convert(Converter converter) | |
{ | |
_converter = converter; | |
_temperatureConverter = new TemperatureConverter(this); | |
_degreeConverter = new DegreeConverter(this); | |
} | |
public object Conversion() | |
{ | |
object degrees; | |
if (_converter.conversion_instruction[0].Equals('r')) | |
{ | |
degrees = _degreeConverter.RadiansToDegrees(); | |
return degrees; | |
} | |
else if (_converter.conversion_instruction[0].Equals('c')) | |
{ | |
degrees = _temperatureConverter.CelsiusToFahrenheit(); | |
return degrees; | |
} | |
else if (_converter.conversion_instruction[0].Equals('f')) | |
{ | |
degrees = _temperatureConverter.FahrenheitToCelsius(); | |
return degrees; | |
} | |
else | |
{ | |
degrees = _degreeConverter.DegreesToRadians(); | |
return degrees; | |
} | |
} | |
} | |
public class Converter | |
{ | |
internal double value; | |
internal string conversion_instruction; | |
private readonly Convert _convert; | |
public Converter(string v) | |
{ | |
this.conversion_instruction = v.Substring(v.Length - 2); | |
var format = new NumberFormatInfo(); | |
format.NumberGroupSeparator = "."; | |
this.value = Double.Parse(v.Replace(conversion_instruction, ""), format); | |
_convert = new Convert(this); | |
} | |
public Convert Convert | |
{ | |
get { return _convert; } | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace DegreeCmd | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
var app = new DegreeConverter.Converter(args[0]); | |
Console.WriteLine(app.Convert.Conversion()); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment