diff options
| author | Sadeep Madurange <smadurange@users.noreply.github.com> | 2022-01-12 20:58:27 +0800 |
|---|---|---|
| committer | Sadeep Madurange <smadurange@users.noreply.github.com> | 2022-01-12 20:58:27 +0800 |
| commit | 3f4d2761c1eec8ae51fc42510a014d3f7f26d632 (patch) | |
| tree | a00cd68969069058e8d1ef64a4c7d2b5ccb69533 /5 | |
| parent | b01c226fa0132dffcddcb803b0375570f37a3f36 (diff) | |
| download | k&r-exercises-3f4d2761c1eec8ae51fc42510a014d3f7f26d632.tar.gz | |
5.10
Diffstat (limited to '5')
| -rw-r--r-- | 5/10.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -6,7 +6,7 @@ /* Evaluates reverse Polish expressions */ int main(int argc, char *argv[]) { - char op[MAXLEN], *s; + char op[MAXLEN], *s; int val[MAXLEN], i, j, k, op1, op2; if (argc == 1) { @@ -14,11 +14,13 @@ int main(int argc, char *argv[]) { return 1; } - for(i = 0, j = 0, ++argv; --argc > 0 && i < MAXLEN - 1 && j < MAXLEN - 1; argv++) { + for (i = 0, j = 0, ++argv; --argc > 0 && i < MAXLEN - 1 && j < MAXLEN - 1; + argv++) { s = *argv; if (isdigit(*s)) val[i++] = atoi(s); - else if (s[0] == '+' || s[0] == '-' || s[0] == '*' || s[0] == '/' || s[0] == '%') + else if (s[0] == '+' || s[0] == '-' || s[0] == '*' || s[0] == '/' || + s[0] == '%') op[j++] = s[0]; else { printf("error: %s not supported\n", s); @@ -28,7 +30,7 @@ int main(int argc, char *argv[]) { k = j; j = 0; - + while (j < k && i > 1) { op2 = val[--i]; op1 = val[--i]; @@ -37,16 +39,16 @@ int main(int argc, char *argv[]) { val[i++] = op1 + op2; break; case '-': - val[i++] = op1 - op2; + val[i++] = op1 - op2; break; case '*': - val[i++] = op1 * op2; + val[i++] = op1 * op2; break; case '/': - val[i++] = op1 / op2; + val[i++] = op1 / op2; break; case '%': - val[i++] = op1 % op2; + val[i++] = op1 % op2; break; default: printf("error: unknown op\n"); |
