Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > такой вопрос


Автор: ilya_cska 13.5.2008, 08:45
вводим с клавиатуры, например, cos(x) (математическое выражение). Как можно реализовать алгоритм, позволяющий вычислять математическое выражение, заданное строкой?

Автор: Maka6er 13.5.2008, 09:04
Распарсить строку и вычислить. Например так:
Код

            string str = Console.ReadLine();
            char [] sep = {'(', ')'};
            string [] parsed = str.Split(sep);
            switch (parsed[0])
            {
                case "cos":
                    Console.WriteLine(Math.Cos(Convert.ToDouble(parsed[1])));
                break;
            }

Автор: ilya_cska 13.5.2008, 10:14
а если cos(x) + 5 ?

Автор: Veitmen 13.5.2008, 12:32
Ищи на тему синтаксический анализ методом рекурсивного спуска. Так же поищи на тему парсер математических выражений.
Много инфы на эту тему. http://www.progz.ru/forum/index.php?showtopic=36384

Автор: source777 13.5.2008, 12:59
Цитата(Veitmen @  13.5.2008,  12:32 Найти цитируемый пост)
Ищи на тему синтаксический анализ методом рекурсивного спуска.
Лучше на тему "Обратная польская запись", код получается гораздо проще, чем у Шилдта в приведённом выше примере...

Автор: MFSham 13.5.2008, 20:01
http://algolist.manual.ru/syntax/revpn.php

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)