diff --git a/latex_src/little_languages.tex b/latex_src/little_languages.tex index 39afc37..291bda1 100644 --- a/latex_src/little_languages.tex +++ b/latex_src/little_languages.tex @@ -690,7 +690,7 @@ \section{逆波兰式计算器} top = 0 next } - if (top == 1) + if (top == 1 && i == NF) printf("\t%.8g\n", stack[top--]) else if (top > 1) { printf("error: too many operands\n") @@ -729,7 +729,7 @@ \section{逆波兰式计算器} { for (i = 1; i <= NF; i++) if ($i ~ /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)$/) { - stack[++top] = $i + stack[++top] = $i } else if ($i == "+" && top > 1) { stack[top-1] += stack[top]; top-- } else if ($i == "-" && top > 1) { @@ -763,7 +763,7 @@ \section{逆波兰式计算器} top = 0 next } - if (top == 1 && $NF !~ /\=$/) + if (top == 1 && i == NF && $NF !~ /\=$/) printf("\t%.8g\n", stack[top--]) else if (top > 1) { printf("error: too many operands\n")