Как реализовать математический анализатор на шарпах - 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);
        } 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы