none
C#, Стек операций RRS feed

  • Вопрос

  • Задача.
    В таблице над значениями в каждой строке необходимо произвести серию операций по
    алгоритму записанному в строчном виде, 
    например, string A="c1+c2-c3+c4*c5"; где c1,c2,c3...- значения в колонках.
    Выделяю и интерпретирую первую операцию "c1+c2", 
    реализую ее в программе - double S=Sum(C1,C2);
    тоже самое со второй операцией - S=Sub(S,C3);
    с четвертой - double M=Mul(C4,C5);
    и с третьей - S=Sum(S+M);
    Эту последовательность операций надо как-то запомнить и выполнить для всех строк таблицы.
    Понятно, что алгоритм можно менять, тогда будет меняться и запоминаемая последовательность операций.
    Вопрос - как, единожды проинтерпретировав алгоритм, запомнить последовательность операций для многократного 
    использования?
    27 июля 2011 г. 0:15

Ответы

  • Не очень понятен вопрос. Как я понял, вам нужно произвести математические действия над некими объектами, а само выражение задано строкой, и заранее неизвестно? И при этом, вы не используете скрипты, а пишете свой парсер?

    В таком случае, вы можете использовать класс Expression для хранения и быстрого вычисления. В процессе парсинга, вы создаете дерево из Expression, а затем компилируете его и выполняете для произвольных данных.


    • Предложено в качестве ответа PashaPashModerator 27 июля 2011 г. 13:39
    • Помечено в качестве ответа Abolmasov Dmitry 28 июля 2011 г. 6:11
    27 июля 2011 г. 6:06
    Отвечающий

Все ответы

  • Не очень понятен вопрос. Как я понял, вам нужно произвести математические действия над некими объектами, а само выражение задано строкой, и заранее неизвестно? И при этом, вы не используете скрипты, а пишете свой парсер?

    В таком случае, вы можете использовать класс Expression для хранения и быстрого вычисления. В процессе парсинга, вы создаете дерево из Expression, а затем компилируете его и выполняете для произвольных данных.


    • Предложено в качестве ответа PashaPashModerator 27 июля 2011 г. 13:39
    • Помечено в качестве ответа Abolmasov Dmitry 28 июля 2011 г. 6:11
    27 июля 2011 г. 6:06
    Отвечающий
  • Знакомые все лица!

    Algol36, привет от GotDotNet.Forums.Vov!
    Вы, как всегда, вовремя...
    Большое спасибо! Разбираюсь.

    27 июля 2011 г. 7:19
  • Уважаемый пользователь.

    Если ответ решает вашу проблему, пожалуйста, не забывайте его отметить (кнопка 'Пометить как ответ' под сообщением). Спасибо.


    Для связи [mail]
    27 июля 2011 г. 12:39