здравствуйте. Услышал от препода одну интересную задачку:
написать программу на с++, которая будет распозновать вводимые с клавиатуры математические функции. т.е если например с клавиатуры ввели:
sin(45) [enter]
то программа должна посчитать sin(45) и выдать ответ [1/sqrt(2)]. при чем функции могут быть любой степени вложенности.
хотелось бы сделать хотя бы распознование таких функций как sin(), cos(), Ln и Log.
может быть кто-нибудь сталкивался с подобными задачими и может подсказать хотя бы основную идею, алгоритм...
распознавание функций (с++)
Модераторы: Naeel Maqsudov, C_O_D_E
Например, создаёшь массив ключевых слов (имён функций), введенное выражение разбиваешь на части, то есть выделяешь имя функции (оно находится до скобки) и параметр. Пишешь swich, где принимаешь решение относительно введенного выражения.
не совсем понятно, как написать switch т.к необходима поддержка вложенных функций...
-
- Сообщения: 106
- Зарегистрирован: 30 авг 2005, 02:53
- Откуда: Санкт-Петербург
- Контактная информация:
Примерно так:
Читаеш введенную строку до первой (
Потом следующий символ, проверяеш на его входжение в диапозон a-Z (правда нада бы исключить П, ту что 3.14... Ну или заранее договориться, что П будет вводиться на Русском языке, чтоб не путаться)
Если да, то значит щас будет вложенная функция и пишеш еще и ее. Если нет, то значение которое необходимо посчитать по функции. Тут главное соблюсти порядок функций по вложениям, хоть и делаеться это простым счетчиком
Читаеш введенную строку до первой (
Потом следующий символ, проверяеш на его входжение в диапозон a-Z (правда нада бы исключить П, ту что 3.14... Ну или заранее договориться, что П будет вводиться на Русском языке, чтоб не путаться)
Если да, то значит щас будет вложенная функция и пишеш еще и ее. Если нет, то значение которое необходимо посчитать по функции. Тут главное соблюсти порядок функций по вложениям, хоть и делаеться это простым счетчиком

Жизнь ― это то, что с нами происходит, пока мы строим планы.© Джон Леннон.
Andrey_06 писал(а):не совсем понятно, как написать switch т.к необходима поддержка вложенных функций...
В нужном case вызываешь вложенную функцию. Сделай через if-else, всё в твоих руках.