Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var fso = new ActiveXObject("Scripting.FileSystemobject");
- var args= new Array();
- args=WSH.Arguments;
- function open(filename) {
- var otf = fso.OpenTextFile(filename);
- return otf.ReadAll();
- }
- var pr=[];
- pr[")"]=1;
- pr["("]=0;
- pr["+"]=2;
- pr["-"]=2;
- pr["*"]=3;
- pr["/"]=3;
- pr["^"]=4;
- function dex(s) {
- var stack= new Array();
- var str=new Array();
- l=s.length;
- var count=0;
- //for (var i=0; i<=l; i++)
- //str[i]=0;
- var flag=true;
- var h=0;
- var popo=0;
- for (var i=0; i<l; i++) {
- if (!isNaN(s.charAt(i)) || s.charAt(i)==".") {
- if (!h) str.push(s.charAt(i));
- if (h) str[str.length-1]+=s.charAt(i);
- h++;
- }
- else {
- h=0;
- if (i==0 && s.charAt(i)=="-") {str.push(-parseFloat(s.charAt(i+1))); i++; h++; continue; }
- 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;}
- if (s.charAt(i-1)=="(" && s.charAt(i)=="-") {str.push(-parseFloat(s.charAt(i))); i++; h++; continue; }
- var count=stack.length-1;
- while (pr[s.charAt(i)]<=pr[stack[count]]) {
- if (s.charAt(i)=="(") {flag=false;}
- if (s.charAt(i)==")") flag=true;
- if (flag) {
- str.push(stack[count]); //if (stack[count]!="(")
- stack.pop();
- } else
- {
- if (s.charAt(i)!="(") {str.push(stack[count]);
- stack.pop();
- }
- }
- count--;
- //WSH.Echo(stack,"STACK INWHILE");
- }
- if (stack[count]=="(" && flag) stack.pop();
- //if (popo) if ((popo%2)) stack.pop();
- if (s.charAt(i)!=")") stack.push(s.charAt(i));//
- WSH.Echo("STACK",stack);
- }
- if (i==l-1)
- do {
- count=stack.length-1;
- if (count>=0 && stack[count]!="(") str.push(stack[count]); // && stack[count]!= "("
- stack.pop();
- // WSH.Echo(stack);
- }
- while (count>0);
- WSH.Echo(stack,"STACK PUSH", "i=",i,"l=",l);
- WSH.Echo("STR=",str);
- }
- WSH.Echo("Нотация",str.join(""));
- return str;
- }
- function sum(s){
- var i=0;
- while (s.length>1) {
- switch (s[i]) {
- case "(": if(s[s.length-1]=="("){ s.pop(); i=0; break; } s[i]=s[i+1];s[i+1]="("; i=0; break;
- 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;
- 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;
- 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;
- 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;
- 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;
- }
- i++;
- }
- return s;
- }
- WSH.Echo("Ответ",sum(dex(open(args(0)))));
Add Comment
Please, Sign In to add comment