Skip to content

Instantly share code, notes, and snippets.

@Sergi0
Sergi0 / rpn.cpp
Created November 15, 2011 00:16
RPN updated version
#define _PREP_AOP_ { if (args.size() < 2) return i + 1; arg2 = args.top(); args.pop(); arg1 = args.top(); args.pop(); }
#define _CHECK_ADD_RES_ { if (args.top() - arg2 != arg1) return i + 1; }
#define _CHECK_SUB_RES_ { if (args.top() + arg2 != arg1) return i + 1; }
#define _CHECK_MUL_ARG_ { if (arg2 != 0 && arg1 > LONG_MAX / arg2) return i + 1; }
#define _CHECK_DIV_ARG_ { if (arg2 == 0 || (arg1 == LONG_MIN && arg2 == -1)) return i + 1; }
int RPN(char *str, int rdx, long &res)
{
if (str == NULL || str[0] == NULL)
return false;