Guest User

Untitled

a guest
Apr 24th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. var fso = new ActiveXObject("Scripting.FileSystemobject");
  2. var args= new Array();
  3. args=WSH.Arguments;
  4. function open(filename) {
  5. var otf = fso.OpenTextFile(filename);
  6. return otf.ReadAll();
  7. }
  8. var pr=[];
  9. pr[")"]=1;
  10. pr["("]=0;
  11. pr["+"]=2;
  12. pr["-"]=2;
  13. pr["*"]=3;
  14. pr["/"]=3;
  15. pr["^"]=4;
  16. function dex(s) {
  17. var stack= new Array();
  18. var str=new Array();
  19. l=s.length;
  20. var count=0;
  21. //for (var i=0; i<=l; i++)
  22. //str[i]=0;
  23. var flag=true;
  24. var h=0;
  25. var popo=0;
  26. for (var i=0; i<l; i++) {
  27. if (!isNaN(s.charAt(i)) || s.charAt(i)==".") {
  28. if (!h) str.push(s.charAt(i));
  29. if (h) str[str.length-1]+=s.charAt(i);
  30. h++;
  31. }
  32. else {
  33. h=0;
  34. if (i==0 && s.charAt(i)=="-") {str.push(-parseFloat(s.charAt(i+1))); i++; h++; continue; }
  35. if (s.charAt(i)=="(" &&s.charAt(i+1)=="-") { WSH.Echo("opapa",s.charAt(i+2)); str.push(-parseFloat(s.charAt(i+2))); i+=2; h++; continue;}
  36. if (s.charAt(i-1)=="(" && s.charAt(i)=="-") {str.push(-parseFloat(s.charAt(i))); i++; h++; continue; }
  37. var count=stack.length-1;
  38. while (pr[s.charAt(i)]<=pr[stack[count]]) {
  39. if (s.charAt(i)=="(") {flag=false;}
  40. if (s.charAt(i)==")") flag=true;
  41. if (flag) {
  42. str.push(stack[count]); //if (stack[count]!="(")
  43. stack.pop();
  44. } else
  45. {
  46. if (s.charAt(i)!="(") {str.push(stack[count]);
  47. stack.pop();
  48. }
  49. }
  50. count--;
  51. //WSH.Echo(stack,"STACK INWHILE");
  52. }
  53. if (stack[count]=="(" && flag) stack.pop();
  54. //if (popo) if ((popo%2)) stack.pop();
  55. if (s.charAt(i)!=")") stack.push(s.charAt(i));//
  56. WSH.Echo("STACK",stack);
  57. }
  58. if (i==l-1)
  59. do {
  60. count=stack.length-1;
  61. if (count>=0 && stack[count]!="(") str.push(stack[count]); // && stack[count]!= "("
  62. stack.pop();
  63. // WSH.Echo(stack);
  64. }
  65. while (count>0);
  66.  
  67. WSH.Echo(stack,"STACK PUSH", "i=",i,"l=",l);
  68. WSH.Echo("STR=",str);
  69.  
  70. }
  71. WSH.Echo("Нотация",str.join(""));
  72. return str;
  73. }
  74. function sum(s){
  75. var i=0;
  76. while (s.length>1) {
  77. switch (s[i]) {
  78. case "(": if(s[s.length-1]=="("){ s.pop(); i=0; break; } s[i]=s[i+1];s[i+1]="("; i=0; break;
  79. case "-": s[i]=(parseFloat(s[i-2])-parseFloat(s[i-1])); s[i-1]=s[i-3]; s[i-2]=s[i-4]; s[i-3]=s[i-5]; i=0; s.shift(); s.shift();WSH.Echo("-",s);break;
  80. case "^": s[i]=Math.pow(parseFloat(s[i-2]),parseFloat(s[i-1]));s[i-1]=s[i-3]; s[i-2]=s[i-4]; s[i-3]=s[i-5];i=0; s.shift(); s.shift();WSH.Echo("pow",s);break;
  81. case "+": s[i]=(parseFloat(s[i-2])+parseFloat(s[i-1]));s[i-1]=s[i-3]; s[i-2]=s[i-4];s[i-3]=s[i-5]; i=0; s.shift(); s.shift();i=0; WSH.Echo("+",s);break;
  82. case "*": s[i]=(parseFloat(s[i-2])*parseFloat(s[i-1]));s[i-1]=s[i-3];s[i-2]=s[i-4]; s[i-3]=s[i-5];i=0; s.shift(); s.shift();i =0; WSH.Echo("*",s);break;
  83. case "/": s[i]=(parseFloat(s[i-2])/parseFloat(s[i-1]));s[i-1]=s[i-3]; s[i-2]=s[i-4]; s[i-3]=s[i-5];i=0; s.shift(); s.shift();i=0; WSH.Echo("/",s);break;
  84. }
  85. i++;
  86. }
  87. return s;
  88. }
  89.  
  90. WSH.Echo("Ответ",sum(dex(open(args(0)))));
Add Comment
Please, Sign In to add comment