概述
js实现四则运算
思路:
把输入的中缀表达式转成后缀表达式,利用正则表达式来处理数字,然后利用栈来得出结果。
代码:
<script>
var Stack = function(){}
Stack.prototype={
Init:function(){
this.STACKMAX = 100;
this.stack = new Array(this.STACKMACK);
this.top = -1;
return this.stack;
},
isEmpty:function(){
if(this.top==-1){
return true;
}
else{
return false;
}
},
push:function(elem){
if(this.top==this.STACKMAX-1){
return "栈满";
}
else{
this.top++;
this.stack[this.top] = elem;
}
},
pop:function(){
if(this.top==-1){
return "空栈,无法删除栈顶元素!";
}
else{
var x = this.stack[this.top];
this.top--;
return x;
}
},
peek:function(){
if(this.top!=-1){
return this.stack[this.top];
}
else{
return "空栈,顶元素无返回值!";
}
},
Clear:function(){
this.top=-1;
},
Length:function(){
return this.top+1;
}
}
</script>
<script type="text/javascript">
function getBackExpre(s){
var list=new Array();
var op=new Stack();
op.Init();
//var num=str.match(/d+(.d+)?/g);
var i=0;
while(i<s.length){
var c=s.charAt(i);
if(c>='0'&&c<='9'){
var s1=s.substr(i);
var m=s1.match(/d+(.d+)?/g);
if (m.length>0){
s1=m[0];
list.push(s1);
}
i=i+s1.length;
continue;
}else if(c=='('){
op.push(c);
}else if(c==')'){
var p=op.pop();
while(p!='('){
list.push(p);
p=op.pop();
}
}else if(c=='+'||c=='-'){
while(!op.isEmpty()&&(op.peek()=='+'||op.peek()=='-'||op.peek()=='*'||op.peek()=='/')){
list.push(op.pop());
}
op.push(c);
}else if(c=='*'||c=='/'){
while(!op.isEmpty()&&(op.peek()=='*'||op.peek()=='/')){
list.push(op.pop());
}
op.push(c);
}
i++;
}
while(!op.isEmpty()){
list.push(op.pop());
}
return list;
}
function g(a,b,c){
var v=0;
a=parseFloat(a);
b=parseFloat(b);
switch (c)
{
case '+':
v=a+b;
break;
case '-':
v=a-b;
break;
case '*':
v=a*b;
break;
case '/':
v=a/b;
break;
}
return v;
}
function getResult(list,result){
for (var i=0;i<list.length;i++){
if(!isNaN(list[i])){
result.push(list[i]);
}else{
var b=result.pop();
var a=result.pop();
var v=g(a,b,list[i]);
result.push(v);
}
}
return result.pop();
}
</script>
<script>
var str = window.prompt("input",str) ;
//str 为要输入的四则运算表达式,b为结果
//var str="1.1+2.0*(3.0+4.0)";
var list=getBackExpre(str);
var result=new Stack();
result.Init();
var b=getResult(list, result);
document.write(b);
</script>
测试:
最后
以上就是疯狂棉花糖为你收集整理的js实现四则运算的全部内容,希望文章能够帮你解决js实现四则运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复