Как можно преобразовать строковый ввод в формулу

Тема в разделе "MS Visual C++", создана пользователем Lexxxx, 27 авг 2007.

Статус темы:
Закрыта.
  1. Lexxxx

    Lexxxx Гость

    Здравствуйте!

    У меня такой вопрос как можно осуществить в программе преобразование строкового ввода формулы в саму формулу... Т.е. на подобе программ Advanced Graphier или 3D Graphier когда вводишь формулу строкой, а она потом строила по ним графики... Для меня в принципе графики строить не обязательно, нужно только само преобразование и затем что бы с этой формулой можно было рабоать...

    В принципе я себе представляю это так

    Создаю функцию в ней символьный массив и заполняю ее функцией cin.getchar, а затем с помощью ветвелний if и switch...case сопоставляю аналоги, а вот что дальше... Во-первых у меня не получается идентифицировать функции по типу cos и sin, точнее получается, но потом неполучается соединить их в общей формуле. Во-вторых как передавать общую формулу как массив или рабоать с ней через указатели. В принципе этот с пособ работает с простыми формулами.... Подскажите пожайлуста способы для более сложных формул. И еще как можно реализовать функции ln (логарифма не важно какого). Буду очень признателен. Заранее спаибо...
     
  2. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Я так понимаю, вас интересуют алгоритмы синтаксического разбора, что-то вроде самого компилятора C++. Про принципы построения подобных аглоритмов можно почитать здесь _http://forums.realcoding.net/index.php?showtopic=9005
     
  3. Azrael

    Azrael Гость

    Google "Обратная польская запись", "Обратная польская нотация".
     
  4. Lexxxx

    Lexxxx Гость

    Спасибо, но это не совсем, что мне нужно... Мне просто надо перевести строку в формулу, что бы компилятор ее понял и все...
     
  5. Pasha

    Pasha Гость

    Для: Lexxxx
    Что значит "компилятор ее понял"? Смог вычислить при заданных значениях параметров? Тогда читай еще раз про ОПЗ.
    А логарифм вычисляется через log или log10.
     
  6. Lexxxx

    Lexxxx Гость

Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей