Make the Reverse Polish Notation calculator work with variables Define a class to represent the calculator's memory. As well as a constructor, it should have these three methods: void set(string variablename, double value); bool isdefined(string variablename); double getvalue(string variablename); There should be no limit on the number of variables that your memory can store. Modify your RPN calculator so that it makes use of that memory If the input is 2 3 4 + * = cat . that means work out 2*(3+4) and remember that as the value of cat. = needs to be handled specially, don't treat it as a normal operator. Then, if the input is 2 cat * . then the result should be whatever 2 * cat is Your calculator should deal with expressions in a loop, so that the user can keep on typing expressions, building up a set of useful variables in the memory, and being able to make use of them. Example: 3.14159 = pi . result is 3.14159 10 = r . result is 10 pi r r * * = area . result is 314.159 etc. And once again: Your program should be crash-proof. That means that it should continue running and only give correct results no matter what bad inputs the user provides.