-
Notifications
You must be signed in to change notification settings - Fork 280
Description
原代码
{ for(i=1;i<=NF;i++){ if($i ~ /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+$)/){ stack[++top] = $i continue }else if($i == "+" && top > 1){ stack[top-1] += stack[top];top-- }else if($i == "-" && top >1){ stack[top-1] -= stack[top] top-- }else if($i == "*" && top > 1){ stack[top-1] *= stack[top];top-- }else if($i == "/" && top > 1){ stack[top-1] /= stack[top];top-- }else if($i == "^" && top > 1){ stack[top-1] ^= stack[top];top-- }else{ printf("error: cannot evaluate %s\n",$i) top = 0 next } if(top == 1){ printf("\t%.8g\n",stack[top--]) }else if(top > 1){ printf("error: too many operands\n") top = 0 } } }
更改后的代码
{ top = 0 for(i=1;i<=NF;i++){ if($i ~ /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+$)/){ stack[++top] = $i continue }else if($i == "+" && top > 1){ stack[top-1] += stack[top];top-- }else if($i == "-" && top >1){ stack[top-1] -= stack[top] top-- }else if($i == "*" && top > 1){ stack[top-1] *= stack[top];top-- }else if($i == "/" && top > 1){ stack[top-1] /= stack[top];top-- }else if($i == "^" && top > 1){ stack[top-1] ^= stack[top];top-- }else{ printf("error: cannot evaluate %s\n",$i) top = 0 next } if(top == 1 && i == NF){ printf("\t%.8g\n",stack[top]) }else if(top > 1 && i == NF){ printf("error: too many operands\n") top = 0 } } }