static void Main(string[] args) { TemperatureConverterImp methodsClass = new TemperatureConverterImp(); // Собственно, массив делигатов. delegateConvertTemperature[] delArray = new delegateConvertTemperature[6]; delArray[0] = methodsClass.CelcToFar; delArray[1] = methodsClass.FarToCelc; delArray[2] = methodsClass.CelcToRan; delArray[3] = methodsClass.RanToCelc; delArray[4] = methodsClass.CelcToReo; delArray[5] = methodsClass.ReoToCelc; // Выводим таблицу и необходимую информацию. // (Решил несколько расширить функционал и сделать ввод поудобнее). Console.WriteLine(" | Из цельсия (tC) | В цельсия (tC)"); Console.WriteLine("----------------------------------------------------------------------"); Console.WriteLine("Фаренгейты (tF) | tF = 9 / 5 * tC + 32 | tC = 5 / 9 * (tF - 32)"); Console.WriteLine("----------------------------------------------------------------------"); Console.WriteLine("Ранкины (tRa) | tC * 9.0 / 5 + 491.67 | (tRa - 491.67) * 5.0 / 9 "); Console.WriteLine("----------------------------------------------------------------------"); Console.WriteLine("Реомюры (tRe) | tC * 5 / 4 | tRe * 4 / 5 "); Console.WriteLine("----------------------------------------------------------------------\n"); do { Console.WriteLine("Введите через пробел наименование величины, из которой хотите перевести, и " + "величину, в которую хотите перевести \n(переводить можно либо из градусов цельсия, либо в них)"); Console.WriteLine("Прим.: tC tRe"); Console.WriteLine("Также вы можете ввести '-', чтобы отменить ввод.\n"); // Получаем от пользователя информацию о том, из какой величины он хочет перевести и в какую. int inp; while (!Validate(Console.ReadLine(), out inp)) { Console.WriteLine("Ввод некорректен. Попробуйте ещё раз или введите '-', чтобы отменить ввод и завершить работу."); } // Если пользователь решил отменить ввод и завершить выполнение программы. if (inp == -2) { return; } string[] delNames = new string[6] { "градусах цельсия", "фаренгейтах", "градусах цельсия", "ранкинах", "градусах цельсия", "реомюрах" }; // Получаем от пользователя температуру в градусах цельсия. Console.WriteLine($"Введите температуру в {delNames[inp]}"); double inpT; while (!double.TryParse(Console.ReadLine(), out inpT)) { Console.WriteLine("Введено некорректное значение. Попробуйте ещё раз."); } Console.WriteLine($"Переведённое значение температуры: {delArray[inp](inpT)}\n"); }while (true); }
static void Main(string[] args) { TemperatureConverterImp temperatureConverter = new TemperatureConverterImp(); delegateConvertTemperature[] converter = new delegateConvertTemperature[] { temperatureConverter.ToFahrenheit, StaticTempConverters.ToKelvin, StaticTempConverters.ToReaumur, StaticTempConverters.ToRankin }; //delegateConvertTemperature converterToCelsius = new delegateConvertTemperature(temperatureConverter.ToCelsius); //delegateConvertTemperature converterToFahrenheit = new delegateConvertTemperature(temperatureConverter.ToFahrenheit); string[] names = new string[] { "Fahrenheit ", "Kelvin ", "Reaumur ", "Rankin " }; Console.WriteLine("Введите вещественное число - температуру по шкале Цельсия:"); try { double temperature = double.Parse(Console.ReadLine()); for (int i = 0; i < converter.Length; i++) { Console.WriteLine(names[i] + Math.Round(converter[i](temperature), 3)); } } catch (Exception e) { Console.WriteLine("Incorrect input!", e); } }
static void Main(string[] args) { TemperatureConvertImp tci = new TemperatureConvertImp(); delegateConvertTemperature[] fromC = new delegateConvertTemperature[] { tci.fromCtoF, StaticTempConverts.fromCtoK, StaticTempConverts.fromCtoRa, StaticTempConverts.fromCtoRe }; delegateConvertTemperature[] toC = new delegateConvertTemperature[] { tci.fromFtoC, StaticTempConverts.fromKtoC, StaticTempConverts.fromRatoC, StaticTempConverts.fromRetoC }; Console.WriteLine("Write any letter to escape the programm"); while (true) { Console.WriteLine("Write temperature in C"); if (!double.TryParse(Console.ReadLine(), out double n)) { break; } else { Console.WriteLine("F\tK\tRa\tRe\t"); for (int i = 0; i < fromC.Length; i++) { Console.Write($"{fromC[i](n):f2}\t"); } Console.WriteLine(); } } }
static void Main() { const int numberOfConverters = 4; delegateConvertTemperature[] converters = new delegateConvertTemperature[numberOfConverters]; converters[(int)Temperature.CToF] = StaticTempConverters.CelciusToFahrenheit; converters[(int)Temperature.CToK] = StaticTempConverters.CelciusToKelvin; converters[(int)Temperature.CToRa] = StaticTempConverters.CelciusToRankine; converters[(int)Temperature.CToRe] = StaticTempConverters.CelciusToReaumur; do { Console.Clear(); double temperature = InputChecker.InputVar <double>("temperature in Celcius"); Console.WriteLine($"Celcius: {temperature:F3}"); for (int i = 0; i < numberOfConverters; ++i) { Console.WriteLine($"{converters[i].Method.Name}: {converters[i](temperature):F3}"); } Console.WriteLine("Press Esc to exit. Press any other key to continue."); } while (Console.ReadKey(true).Key != ConsoleKey.Escape); }
static void Main(string[] args) { TemperatureConvertImp t = new TemperatureConvertImp(); delegateConvertTemperature[] d = new delegateConvertTemperature[8]; d[0] = t.fromCToF; d[1] = t.fromFToC; d[2] = StaticTempConverters.fromCToK; d[3] = StaticTempConverters.fromKToC; d[4] = StaticTempConverters.fromCToRa; d[5] = StaticTempConverters.fromRaToC; d[6] = StaticTempConverters.fromCToRe; d[7] = StaticTempConverters.fromReToC; double c; do { Console.Clear(); Console.WriteLine("Введите темпратуру в цельсиях"); if (!double.TryParse(Console.ReadLine(), out c)) { Console.WriteLine("Неверный ввод"); Console.WriteLine("Нажмите Esc для завершения..."); continue; } Console.WriteLine($"{d[0](c)} F; {d[2](c)} K; {d[4](c)}Ra; {d[6](c)}Re"); Console.WriteLine("Нажмите Esc для завершения..."); } while (Console.ReadKey().Key != ConsoleKey.Escape); }
static void Main(string[] args) { TemperatureConverterImp obj = new TemperatureConverterImp(); delegateConvertTemperature delConvertToFahrenheit = new delegateConvertTemperature (obj.ConvertToFahrenheit); delegateConvertTemperature delConvertToCelsius = new delegateConvertTemperature (obj.ConvertToCelsius); double celsius = 0.0; double fahrenheit = delConvertToFahrenheit(celsius); string msg1 = string.Format("Celsius = {0}, Fahrenheit = {1}", celsius, fahrenheit); Console.WriteLine(msg1); fahrenheit = 212.0; celsius = delConvertToCelsius(fahrenheit); string msg2 = string.Format("Celsius = {0}, Fahrenheit = {1}", celsius, fahrenheit); Console.WriteLine(msg2); Console.WriteLine(delConvertToCelsius.Target); Console.ReadKey(); }
static void Main() { Console.WriteLine($"Задача #3: {Environment.NewLine}"); // -------------------------------------------------------- // Блок кода, необходимый для первой части третьей задачи (скорее более вводный в условие задачи). TemperatureConverterImp converter = new TemperatureConverterImp(); delegateConvertTemperature TempCelsToFahr = new delegateConvertTemperature(converter.CelsToFahr); delegateConvertTemperature TempFahrToCels = new delegateConvertTemperature(converter.FahrToCels); Console.WriteLine("Пример работы перевода 45.5 градусов по Цельсию в градусы по Фаренгейту:"); Console.WriteLine($"{TempCelsToFahr(45.5):F2}"); Console.WriteLine("Пример работы перевода 70 градусов по Фаренгейту в градусы по Цельсию:"); Console.WriteLine($"{TempFahrToCels(70):F2}"); Console.WriteLine($"--------------------------------{Environment.NewLine}"); // -------------------------------------------------------- // Блок кода, необходимый для второй части третьей задачи. double initialTemp = -273.15; do { Console.WriteLine("Введите действительное значение температуры в градусах Цельсия (> -273.15):"); } while (!double.TryParse(Console.ReadLine(), out initialTemp) || initialTemp == -273.15); delegateConvertTemperature[] delegateArray = { StaticTempConverters.CelsToFahr, StaticTempConverters.CelsToKelvin, StaticTempConverters.CelsToRankin, StaticTempConverters.CelsToReaumur }; foreach (delegateConvertTemperature element in delegateArray) { Console.WriteLine(element?.Invoke(initialTemp)); } }
static void Main(string[] args) { TemperatureConvertImp dummy = new TemperatureConvertImp(); delegateConvertTemperature[] dels = new delegateConvertTemperature[] { dummy.CelciusToFahrenheit, dummy.FahrenheitToCelcius, StaticTempConverters.CelciusToKelvin, StaticTempConverters.CelciusToRankin, StaticTempConverters.CelciusToReaumur }; double tempC = -10.5; double tempF = 40.5; Console.WriteLine($"{tempC} degrees Celcius to Fahrenheit: {dels[0]?.Invoke(tempC)}F"); Console.WriteLine($"{tempF} degrees Fahrenheit to Celcius: {dels[1]?.Invoke(tempC)}C"); Console.WriteLine(); do { Console.Write("Enter the temperature in C: "); } while (!double.TryParse(Console.ReadLine(), out tempC)); Console.WriteLine(); Console.WriteLine($"{tempC} degrees Celcius to Fahrenheit: {dels[0]?.Invoke(tempC)}F"); Console.WriteLine($"{tempC} degrees Celcius to Kelvin: {dels[2]?.Invoke(tempC)}K"); Console.WriteLine($"{tempC} degrees Celcius to Rankin: {dels[3]?.Invoke(tempC)}R"); Console.WriteLine($"{tempC} degrees Celcius to Reaumur: {dels[4]?.Invoke(tempC)}Re"); }
static void Main(string[] args) { TemperatureConvertInp obj = new TemperatureConvertInp(); delegateConvertTemperature CtF = obj.CelsiusToFahrenheit; delegateConvertTemperature FtC = obj.FahrenheitToCelsius; Console.WriteLine($"0 C to F: {CtF?.Invoke(0)}; 0 F to C {FtC?.Invoke(0)}"); delegateConvertTemperature CtK = StaticTempConverters.CelsiusToKelvin; delegateConvertTemperature KtC = StaticTempConverters.KelvinToCelsius; delegateConvertTemperature CtR = StaticTempConverters.CelsiusToRankin; delegateConvertTemperature RtC = StaticTempConverters.RankinToCelsius; delegateConvertTemperature[] converters = { CtF, CtK, CtR, }; double t; Console.Write("Celsius: "); double.TryParse(Console.ReadLine(), out t); foreach (delegateConvertTemperature cnv in converters) { string str = cnv.Method.ToString(); Console.WriteLine($"{str.Substring(16, str.Length - 24)}: {cnv?.Invoke(t)}"); } }
static void Main(string[] args) { delegateConvertTemperature[] arr = new delegateConvertTemperature[3]; arr[0] = new delegateConvertTemperature(StaticTempConverters.CelsiusToKelvin); arr[1] = new delegateConvertTemperature(StaticTempConverters.CelsiusToRankine); arr[2] = new delegateConvertTemperature(StaticTempConverters.CelsiusToReaumur); double val; while (true) { do { Console.WriteLine("Введите температуру в цельсиях"); }while (!double.TryParse(Console.ReadLine(), out val)); Console.WriteLine($"Celsius to Kelvin: {val} -> {arr[0](val)}"); Console.WriteLine($"Celsius to Rankine: {val} -> {arr[1](val)}"); Console.WriteLine($"Celsius to Reaumur: {val} -> {arr[2](val)}"); } }
static void Main(string[] args) { delegateConvertTemperature[] delConvert = new delegateConvertTemperature[8]; delConvert[0] = TemperatureConvertImp.CtoK; delConvert[1] = TemperatureConvertImp.CtoR; delConvert[2] = TemperatureConvertImp.CtoRe; delConvert[3] = TemperatureConvertImp.CtoF; delConvert[4] = TemperatureConvertImp.KtoC; delConvert[5] = TemperatureConvertImp.RtoC; delConvert[6] = TemperatureConvertImp.RetoC; delConvert[7] = TemperatureConvertImp.FtoC; int x = int.Parse(Console.ReadLine()); for (int i = 0; i < 8; ++i) { Console.WriteLine(delConvert[i](x)); } }
public static void Main() { var converter = new TemperatureConverterImp(); // Следующие два способа совершенно одинаковы, см. sharplab.io: var toCelsius = new delegateConvertTemperature(converter.ToCelsius); delegateConvertTemperature toFarenheits = converter.ToFarenheits; Console.WriteLine($"100⁰C = {toFarenheits(100)}⁰F"); Console.WriteLine($"100⁰F = {toCelsius(100)}⁰C"); }
static void Main() { TemperatureConverterImp temperature = new TemperatureConverterImp(); delegateConvertTemperature FtoC = temperature.MethodFToC, CtoF = temperature.MethodCToF; double[] testTemp = { 0, 5, -5, 12.5, -12.5 }; for (int i = 0; i < testTemp.Length; i++) { double currentTemp = FtoC(testTemp[i]); WriteLine($"{testTemp[i]} F = {currentTemp} C \n{currentTemp} C = {CtoF(currentTemp)} F\n"); } }
static void Main(string[] args) { TemperatureConverterImp first = new TemperatureConverterImp(); delegateConvertTemperature[] tempConvertors = new delegateConvertTemperature[4]; tempConvertors[0] = first.FromCtoF; tempConvertors[1] = StaticTempConverters.FromCtoK; tempConvertors[2] = StaticTempConverters.FromCtoR; tempConvertors[3] = StaticTempConverters.FromCtoRe; string[] scales = { "F", "K", "R", "Re" }; double temp; do { Console.Write("Введите температутуру в градусах Цельсия: "); }while (!double.TryParse(Console.ReadLine(), out temp)); for (int i = 0; i < 4; i++) { Console.WriteLine($"{temp:F3} C = {tempConvertors[i](temp):F3} {scales[i]}"); } }
static void Main(string[] args) { TemperatureConverterImp tci = new TemperatureConverterImp(); delegateConvertTemperature[] delegates = new delegateConvertTemperature[4]; delegates[0] = tci.ConvertToFahrenheit; delegates[1] = StaticTempConverters.ConvertToKelvin; delegates[2] = StaticTempConverters.ConvertToRankin; delegates[3] = StaticTempConverters.ConvertToReaumur; do { Console.Clear(); double x; do { Console.Clear(); Console.WriteLine("Введите температуру в градусах Цельсия:"); } while (!double.TryParse(Console.ReadLine(), out x)); Console.WriteLine("°C\t°F\tK\t°R\t°Re"); Console.WriteLine(x + "\t" + delegates[0](x).ToString("F2") + "\t" + delegates[1](x).ToString("F2") + "\t" + delegates[2](x).ToString("F2") + "\t" + delegates[3](x).ToString("F2")); Console.WriteLine("Чтобы выйти из программы, нажмите Escape"); } while (Console.ReadKey().Key != ConsoleKey.Escape); }
static void Main(string[] args) { /*delegateConvertTemperature toFahr = TemperatureConverterImp.Celsius2Fahr; * delegateConvertTemperature toCels = TemperatureConverterImp.Fahr2Celsius; * * * Console.WriteLine(toFahr(10)); * * Console.WriteLine(toCels(10)); * Console.WriteLine(toFahr(-12.22222)); * * Console.WriteLine(toFahr(20)); * Console.WriteLine(toCels(20));*/ do { double cels = int.Parse(Console.ReadLine()); string[] arr = new string[4] { "Celsius", "Fahrenheit", "Rankin", "Roumor" }; delegateConvertTemperature[] delArr = new delegateConvertTemperature[4] { (x) => x, TemperatureConverterImp.Celsius2Fahr, TemperatureConverterImp.Celsius2Rankin, TemperatureConverterImp.Celsius2Roumor }; for (int i = 0; i < arr.Length; ++i) { Console.WriteLine(arr[i] + " " + delArr[i](cels).ToString("F3")); } Console.WriteLine("Press esc to exit"); } while (Console.ReadKey().Key != ConsoleKey.Escape); }
static void Main(string[] args) { TemperatureConverterImp tm = new TemperatureConverterImp(); delegateConvertTemperature delF = new delegateConvertTemperature(tm.C_F); delegateConvertTemperature delC = new delegateConvertTemperature(tm.F_C); delegateConvertTemperature[] Maindel = { delF, delC }; //Через массив Console.WriteLine("100F = {0}C", Maindel[1](100)); Console.WriteLine("100C = {0}F", Maindel[0](100)); Console.WriteLine("100F = {0}C", delC(100)); Console.WriteLine("100C = {0}F", delF(100)); Console.ReadLine(); //создаем оъект.когда вызываем метод из класса вызываем через инвоук }
static void Main(string[] args) { // ------------------------------------------------------------------------------------------------------------------------ // Инициализируем необходимые делегаты. TemperatureConverterImp temperatureConverter = new TemperatureConverterImp(); delegateConvertTemperature first = new delegateConvertTemperature(temperatureConverter.CToF); delegateConvertTemperature second = new delegateConvertTemperature(temperatureConverter.FToC); // Узнаём необходимую температуру (Цельсий). Console.WriteLine("Введите вашу температуру в шкале Цельсия! (обязательно вещественную!!!)"); double tempCel = double.Parse(Console.ReadLine()); // Узнаём необходимую температуру (Фаренгейт). Console.WriteLine("Введите вашу температуру в шкале Фаренгейта! (обязательно вещественную!!!)"); double tempFar = double.Parse(Console.ReadLine()); // Выводим обе конвертированные температуры: Console.WriteLine($"Первая температура по Фарегейту == {first(tempCel)}"); Console.WriteLine($"Вторая температура по Цельсию == {second(tempFar)}"); //------------------------------------------------Конец первой части-------------------------------------------------------- // Пояснение - Всё было решено запихнуть не в отдельный класс StaticTempConverters, а в тот же класс добавилось несколько // методов. Логика выполнения та же, новые методы - статические, так, просто, показалось красивее. // Считываем данные о новой температуре на обработку. Console.WriteLine("Начало Выполнения Второй части задания!!!"); Console.WriteLine("Введите вашу температуру в шкале Цельсия! (обязательно вещественную!!!)"); tempCel = double.Parse(Console.ReadLine()); // Создаём массив делегатов, содержащих требуемые методы. delegateConvertTemperature[] listOfMethods = new delegateConvertTemperature[4]; listOfMethods[0] = temperatureConverter.CToF; listOfMethods[1] = TemperatureConverterImp.CToK; listOfMethods[2] = TemperatureConverterImp.CToRan; listOfMethods[3] = TemperatureConverterImp.CToReo; // Для удобного вызова всех методов создаём список описаний действий: string[] listOfDescriptions = { "Фаренгейта", "Кельвина", "Ранкина", "Реомюра" }; // Выводим все ответы. for (int i = 0; i < listOfMethods.Length; ++i) { Console.WriteLine($"Ваша температура, переведённая в шкалу {listOfDescriptions[i]} == {listOfMethods[i](tempCel)}"); } }