На сайте ведутся работы 12. "Поп и Брейк" | ТРИЗ - РТВ - ТРТЛ | Бизнес-форум TRIZ-RI
9737
СОГЛАСЕН С ОБРАБОТКОЙ ЛИЧНЫХ ДАННЫХ

Обсуждения-аналоги

Скрыть / Показать Сортировать по дате
2010-01-22 15:07:59
Сычев С.В., Лебедев К.А. » Всем

12. "ПОП И БРЕЙК"

А теперь соединим функции NeedPop и BreakNow:


Как видно код функций NeedPop и BreakNow идентичен. И мы хотели, чтобы он был один. Отличие состоит лишь в том, что, в зависимости от описанных выше обстоятельств, мы берем разные элементы из таблицы приоритетов и используем разные операторы сравнения (больше ">" и меньше или равно "<=").


В идеале, когда на входе один параметр, код сам выполняет функцию BreakNow, а когда другой, то - функцию NeedPop. Для этого вместо конкретного параметра в строке возврата напишем формулу.


bool Pop_N_Break(const int x const TToken & rToken1, const TToken & rToken2)
{
    assert(rToken1.GetType() < eTokenTypeCount);
    assert(rToken2.GetType() < eTokenTypeCount);

    return g_iPriorities[rToken1.GetType()][x] >
g_iPriorities[rToken2.GetType()][x + 1];
}


Далее...



Яндекс.Метрика