{"id":511,"date":"2015-12-20T23:35:26","date_gmt":"2015-12-20T20:35:26","guid":{"rendered":"http:\/\/java.mazurok.com\/?p=511"},"modified":"2015-12-28T01:17:10","modified_gmt":"2015-12-27T22:17:10","slug":"%d0%be%d0%b1%d1%80%d0%b0%d1%82%d0%bd%d0%b0%d1%8f-%d0%bf%d0%be%d0%bb%d1%8c%d1%81%d0%ba%d0%b0%d1%8f-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-2","status":"publish","type":"post","link":"https:\/\/java.mazurok.com\/?p=511","title":{"rendered":"\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u043b\u044c\u0441\u043a\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c"},"content":{"rendered":"<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u043b\u044c\u0441\u043a\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C\">\u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438<\/a>.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u043a, \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435\u00a0<a href=\"http:\/\/java.mazurok.com\/new\/%D1%81%D1%82%D0%B5%D0%BA-v-java.html\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u043e \u0442\u043e \u044f \u043e\u0431\u043e\u0448\u0435\u043b\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u0438\u043c \u0441\u0442\u0435\u043a\u043e\u043c \u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <a href=\"http:\/\/java.mazurok.com\/new\/%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F-%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F-%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F.html#comment-30\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0438<\/a>.<\/p>\n<p>\u041b\u0435\u043a\u0441\u0435\u043c\u044b \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0442 \u043d\u0438 \u0441\u043b\u043e\u0432\u0430 \u043f\u0440\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u044b\u043b\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 &#171;\u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439&#187;. \u0414\u043b\u044f \u044d\u0442\u043e \u0431\u0440\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0438\u0441\u043b\u0430 \u0434\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e.<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"\">15 * -(3 - 4)<\/pre>\n<\/td>\n<td>\n<pre class=\"\">15 3 4 - u *<\/pre>\n<\/td>\n<td>\n<pre class=\"\">15<\/pre>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"\">92\/10<\/pre>\n<\/td>\n<td>\n<pre class=\"\">92 10 \/<\/pre>\n<\/td>\n<td>\n<pre class=\"\">9<\/pre>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"\">2+2-2*2\/2<\/pre>\n<\/td>\n<td>\n<pre class=\"\">2 2 + 2 2 * 2 \/ -<\/pre>\n<\/td>\n<td>\n<pre class=\"\">2<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<pre class=\"lang:java decode:true \">import java.util.Scanner;\r\nimport java.util.StringTokenizer;\r\n\r\n\/**\r\n * Created by green on 20.12.15.\r\n *\/\r\nclass Parser{\r\n        private String operators = \"u+-*\/\";\r\n        private String delimiters = operators + \"( )\";\r\n        public boolean correct = true;\r\n        private boolean isOperator(String x){\r\n            if(x.length() != 1) return false;\r\n            for(int i = 0; i &lt; operators.length(); i++){\r\n                if(x.charAt(0) == operators.charAt(i)) return true;\r\n            }\r\n            return false;\r\n        }\r\n        private boolean isDelimiter(String x){\r\n            if(x.length() != 1) return false;\r\n            for(int i = 0; i &lt; delimiters.length(); i++){\r\n                if(x.charAt(0) == delimiters.charAt(i)) return true;\r\n            }\r\n            return false;\r\n        }\r\n        private int priority(String x) {\r\n            if (x.equals(\"(\")) return 1;\r\n            if (x.equals(\"+\") || x.equals(\"-\")) return 2;\r\n            if (x.equals(\"*\") || x.equals(\"\/\")) return 3;\r\n            return 4;\r\n        }\r\n        public String parse(String infix) {\r\n            String postfix = \"\";\r\n            steck stack = new steck();\r\n            StringTokenizer tokenizer = new StringTokenizer(infix, delimiters, true);\r\n            String prev = \"\", curr = \"\";\r\n            while (tokenizer.hasMoreTokens()) {\r\n                curr = tokenizer.nextToken();\r\n                if (!tokenizer.hasMoreTokens() &amp;&amp; isOperator(curr)) {\r\n                    postfix = (\"\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435.\");\r\n                    correct = false;\r\n                    return postfix;\r\n                }\r\n                if (curr.equals(\" \")) continue;\r\n                if (isDelimiter(curr)) {\r\n                    if (curr.equals(\"(\")) stack.push(curr);\r\n                    else if (curr.equals(\")\")) {\r\n                        while (!stack.peek().equals(\"(\")) {\r\n                            postfix += stack.pop().toString() + \" \";\r\n                            if (stack.isEmpty()) {\r\n                                postfix = (\"\u0421\u043a\u043e\u0431\u043a\u0438 \u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b.\");\r\n                                correct = false;\r\n                                return postfix;\r\n                            }\r\n                        }\r\n                        stack.pop();\r\n                    }else {\r\n                        if (curr.equals(\"-\") &amp;&amp; (prev.equals(\"\") || (isDelimiter(prev)  &amp;&amp; !prev.equals(\")\")))) {\r\n                            curr = \"u\";\r\n                        }else{\r\n                            while (!stack.isEmpty() &amp;&amp; (priority(curr) &lt;= priority(stack.peek().toString()))) {\r\n                                postfix += stack.pop().toString()  + \" \";\r\n                            }\r\n\r\n                        }\r\n                        stack.push(curr);\r\n                    }\r\n\r\n                }else {\r\n                    postfix += curr + \" \";\r\n                }\r\n                prev = curr;\r\n            }\r\n            while (!stack.isEmpty()) {\r\n                if (isOperator(stack.peek().toString())) postfix += stack.pop().toString() + \" \";\r\n                else {\r\n                    postfix = \"\u0421\u043a\u043e\u0431\u043a\u0438 \u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b.\";\r\n                    correct = false;\r\n                    return postfix;\r\n                }\r\n            }\r\n            return postfix;\r\n        }\r\n    public int calc(String postfix) {\r\n        if(!correct) return 0;\r\n        steck stack = new steck();\r\n        for (int i = 0; i &lt; postfix.length() ; i++) {\r\n            if(postfix.charAt(i) == ' ') continue;\r\n            if (postfix.charAt(i) == '+') stack.push(Integer.valueOf(stack.pop().toString()) + Integer.valueOf(stack.pop().toString()));\r\n            else if (postfix.charAt(i) == '-') {\r\n                int b = Integer.valueOf(stack.pop().toString()), a = Integer.valueOf(stack.pop().toString());\r\n                stack.push(a - b);\r\n            }\r\n            else if (postfix.charAt(i) == '*') stack.push(Integer.valueOf(stack.pop().toString()) * Integer.valueOf(stack.pop().toString()));\r\n            else if (postfix.charAt(i) == '\/') {\r\n                int b = Integer.valueOf(stack.pop().toString()), a = Integer.valueOf(stack.pop().toString());\r\n                stack.push(a \/ b);\r\n            }\r\n            else if (postfix.charAt(i) == 'u') stack.push(-Integer.valueOf(stack.pop().toString()));\r\n            else{\r\n                int g = postfix.indexOf(' ',i);\r\n                stack.push(Integer.valueOf(postfix.substring(i, g)));\r\n                i = g;\r\n            }\r\n        }\r\n        return Integer.valueOf(stack.pop().toString());\r\n    }\r\n}\r\n\r\npublic class postfix {\r\n    public static void main(String[] args) {\r\n        Scanner in = new Scanner(System.in);\r\n        String s = \"15 * -(3 - 4)\";\r\n        Parser x = new Parser();\r\n        s = x.parse(s);\r\n        if(x.correct){\r\n            System.out.println(s);\r\n            System.out.println(x.calc(s));\r\n        }else{\r\n            System.out.println(\"\u041e\u0448\u0438\u0431\u043a\u0430:\"+s);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/ideone.com\/RflPPM\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 ideone.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u043b\u044c\u0441\u043a\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u043a, \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435\u00a0\u0442\u0443\u0442. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u043e \u0442\u043e \u044f \u043e\u0431\u043e\u0448\u0435\u043b\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u0438\u043c \u0441\u0442\u0435\u043a\u043e\u043c \u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u041b\u0435\u043a\u0441\u0435\u043c\u044b \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0442 \u043d\u0438 \u0441\u043b\u043e\u0432\u0430 \u043f\u0440\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u044b\u043b\u0430 &hellip; <a href=\"https:\/\/java.mazurok.com\/?p=511\" class=\"more-link\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":33,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts\/511"}],"collection":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=511"}],"version-history":[{"count":1,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts\/511\/revisions"}],"predecessor-version":[{"id":512,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts\/511\/revisions\/512"}],"wp:attachment":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}