2015-06-17 4 views
-2

Я хочу сделать калькулятор. мой код до сих пор есть.Сделать динамический калькулятор

  string input; 
      input = Console.ReadLine(); 
      List<string> numbers = new List<string>(); 

      string curNumber = ""; 

      foreach (char c in input) 
      { 
       if (c =='+'|| c =='-'||c =='/'||c =='*') 
       { 
        numbers.Add(curNumber); 
        curNumber = ""; 
       } 
       else 
       { 
        curNumber += c.ToString(); 
       } 
      } 

Теперь я не знаю, как я должен работать дальше с цифрами. Если входной сигнал, например: 20 + 3 + 13-17. Как я могу рассчитать числа? Как бы реализовать эту логику в моем коде?

+2

взломать: использовать существующий метод 'DataTable.Compute':' string input = "100 + 20 + 3-17 + 2 + 7/3 + 3% 2 + 100 * 10"; var dt = new System.Data.DataTable(); var result = dt.Compute (input, null); '// result = 1111.33333333333 – ASh

ответ

2
var res = new DataTable().Compute("1-2/3*4", null); 


редактировать: Также обратите внимание, вы можете использовать поля в таблице данных, чтобы сделать такие функции, как суммирование столбца под названием «Total»

var Total = DataTable().Compute("Sum(Total)", null); 
+0

Loool так просто? Я не могу поверить, что это так просто: D – saaami11

+0

Можете ли вы объяснить мне, что здесь происходит или отправить мне ссылку, где это объясняется? – saaami11

+0

https://msdn.microsoft.com/en-us/library/system.data.datatable.compute(v=vs.110).aspx – Nissim

1

Другим вариантом будет с помощью IronPython и IronRuby :

var res = new IronPython.Hosting.PythonEngine().EvaluateAs<double>("1-2/3*4"); 
+0

Можете ли вы объяснить мне, что здесь происходит или отправить мне ссылку, где это объясняется? – saaami11

2

Мой предпочтительный вариант будет использовать NCalc

Смежные вопросы