Разработать калькулятор - C#
Формулировка задачи:
Вот есть калькулятор, но мне необходимо ко всему этому считать ещё и тригонометрические функции sin(), cos(), tg().
И ещё добавить обработку исключений, например, при вводе некорректного выражения ( отсутствие закрывающей скобки или любое другое) система должна сообщить об этом пользователю и предоставить возможность исправить выражение.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace newspace { class Program { static void Main(string[] args) { Console.WriteLine("Введите выражение: "); String s = Console.ReadLine(); Console.WriteLine(" {0} = {1} ", s, Evaluate(s)); Console.ReadKey(); } public static double Evaluate(string expression) { DataTable table = new DataTable(); table.Columns.Add("expression", typeof(string), expression); DataRow row = table.NewRow(); table.Rows.Add(row); return double.Parse((string)row["expression"]); } } }
Решение задачи: «Разработать калькулятор»
textual
Листинг программы
public class ExpressionCalculator { private MethodInfo mi; public void Compile(string expression) { string source = @" using System; public static class Calculator { public static double Calc(double x) { return %expression%; } public static double sin(double x) { return Math.Sin(x); } public static double cos(double x) { return Math.Cos(x); } }".Replace("%expression%", expression); // Настройки компиляции var compilerParams = new CompilerParameters { GenerateInMemory = true }; // Компиляция var results = new CSharpCodeProvider().CompileAssemblyFromSource(compilerParams, source); //обработка ошибок if (results.Errors.Count > 0) throw new Exception(results.Errors[0].ErrorText); //получаем калькулятор var calculator = results.CompiledAssembly.GetType("Calculator"); mi = calculator.GetMethod("Calc"); } public double Calculate(double x) { return (double)mi.Invoke(null, new object[] { x }); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д