{"id":335,"date":"2025-05-18T21:55:27","date_gmt":"2025-05-18T21:55:27","guid":{"rendered":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/?page_id=335"},"modified":"2025-07-29T21:20:47","modified_gmt":"2025-07-29T21:20:47","slug":"reverse-polish-notation-program","status":"publish","type":"page","link":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/reverse-polish-notation-program\/","title":{"rendered":"Reverse Polish Notation Program"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\n#include &lt;stack&gt;\n#include &lt;string&gt;\n\nusing namespace std;\n\nint main(){\n\n    \/\/stack declaration for integers\n    stack&lt;int&gt; varStack;\n\n    string usrInput;\n\n    \/* \n     * Separate string to concatenate multi-digit int \n     * Used in default case for first appearance of an int in user input\n     *\/\n    string multiDigitVar;\n\n    \/\/integers for evaluation\n    int var1, var2, answer;\n\n    \/\/Accept user input as entire line \n    cout &lt;&lt; \"Please enter your equation in Reverse Polish Notation: \";\n    getline(cin, usrInput);\n    cout &lt;&lt; endl;\n\n    \/\/FOR loop continuing length of user input\n    for(int i = 0; i &lt; usrInput.length(); i++)\n    {\n        \/\/necessary integer to convert string to int\n        int convertedVar;\n\n        switch(usrInput&#091;i]){\n            case '+': \/\/addition\n                var2 = varStack.top();\n                varStack.pop();\n\n                var1 = varStack.top();\n                varStack.pop();\n\n                answer = var1 + var2;\n                varStack.push(answer);\n\n                break;\n            case '-': \/\/subtraction\n                var2 = varStack.top();\n                varStack.pop();\n\n                var1 = varStack.top();\n                varStack.pop();\n\n                answer = var1 - var2;\n                varStack.push(answer);\n\n                break;\n            case '*': \/\/multiplication\n                var2 = varStack.top();\n                varStack.pop();\n\n                var1 = varStack.top();\n                varStack.pop();\n\n                answer = var1 * var2;\n                varStack.push(answer);\n                break;\n            case '\/': \/\/division\n                var2 = varStack.top();\n                varStack.pop();\n\n                var1 = varStack.top();\n                varStack.pop();\n\n                answer = var1 \/ var2;\n                varStack.push(answer);\n                break;\n            case ' ':\n                \/\/white space in user Input. Do nothing.\n                break;\n            default:\n                if(usrInput&#091;i+1] != ' ') { \/\/tests for multi-digit number in response\n                    int j = i;\n                    while (usrInput&#091;j] != ' ') \/\/while loop adds digits until whitespace appears in index + 1\n                    {\n                        multiDigitVar += usrInput&#091;j]; \/\/form the number by applying each digit\n\n                        j++; \/\/traverse multi-digit number\n                        i++; \/\/update index counter\n                    }\n\n                    convertedVar = stoi(multiDigitVar);\n                    varStack.push(convertedVar);\n                    break;\n                }\n                \/\/single-digit conversion and insertion\n                convertedVar = usrInput&#091;i] - '0'; \/\/convert character to int using special technique\n                varStack.push(convertedVar);\n                break;\n        }\n\n        \/\/reset multi-digit string for next appearance of multi-digit int\n        multiDigitVar = ' ';\n    }\n\n    \/\/output result\n    cout &lt;&lt; \"The result of your equation is: \";\n    cout &lt;&lt; varStack.top();\n    cout &lt;&lt; endl;\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":28607,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/pages\/335"}],"collection":[{"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/users\/28607"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/comments?post=335"}],"version-history":[{"count":2,"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/pages\/335\/revisions"}],"predecessor-version":[{"id":368,"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/pages\/335\/revisions\/368"}],"wp:attachment":[{"href":"https:\/\/sites.wp.odu.edu\/zsixportfolio\/wp-json\/wp\/v2\/media?parent=335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}