Как реализовать математический анализатор на шарпах - C#
Формулировка задачи:
В целях обучения решил написать мат анализатор, который умел-бы:
1) Считать строку.
2) Выполнить примитивные мат вычисления (+, -, /, *)
3) Прожевать эту всю кашу, и вывести ответ.
Как это разумно реализовать? Буду очень признателен за ссылки и предложения алгоритмов.
Решение задачи: «Как реализовать математический анализатор на шарпах»
textual
Листинг программы
namespace Analizator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Для выхода из программы введите пустое выражение.");
for (; ; )
{
Console.Write("Введите математическое выражение: ");
string Nach = Console.ReadLine();
if (Nach == "") break;
Console.WriteLine("{0} = {1}",Nach, Scet(Nach));
}
}
static public double Scet(string a)
{
int found0 = a.LastIndexOf("+");
if (found0 >= 0)
return Scet(a.Substring(0, found0)) + Scet(a.Substring(found0 + 1));
int found1 = a.LastIndexOf("-");
if (found1 >= 0)
return Scet(a.Substring(0, found1)) - Scet(a.Substring(found1 + 1));
int found2 = a.LastIndexOf("*");
if (found2 >= 0)
return Scet(a.Substring(0, found2)) * Scet(a.Substring(found2 + 1));
int found3 = a.LastIndexOf("/");
if (found3 >= 0)
return Scet(a.Substring(0, found3)) / Scet(a.Substring(found3 + 1));
int found4 = a.LastIndexOf("^");
if (found4 >= 0)
return Math.Pow(Scet(a.Substring(0, found4)),Scet(a.Substring(found4 + 1)));
return Convert.ToDouble(a);
}
}
}