From 17400db194b140fba5c709c5e01ec57fa5c5197a Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 18 Dec 2021 14:11:53 +0800 Subject: 4.10 --- 4/10.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to '4/10.c') diff --git a/4/10.c b/4/10.c index d01a14f..c8df3ee 100644 --- a/4/10.c +++ b/4/10.c @@ -15,6 +15,7 @@ #define INDEX(x) (x <= 'Z' ? x - 'A' : x - 71) /* index of the variable */ int var[52]; +double lout; void push(double); double peek(); @@ -69,8 +70,17 @@ int main(int argc, char *argv[]) { case '=': var[INDEX(s[0])] = pop(); break; + case VAR: + if (strcmp("LOUT", s) == 0) + push(lout); + else + push(var[INDEX(s[0])]); + break; case FUN: break; + case '\n': + lout = pop(); + printf("\t%.8g\n", lout); default: printf("error: unknown command %s\n", s); } @@ -86,7 +96,7 @@ int line[MAXLINE]; int mgetline() { int i, c; - for (i = 0; i < MAXLINE - 1 && (c = getchar()) != '\n' && c != EOF; i++) { + for (i = 0; i < MAXLINE - 1 && (c = getchar()) != EOF; i++) { line[i] = c; } @@ -103,7 +113,7 @@ int getop(char s[]) { s[1] = 0; // special characters and operators - if (c == 0 || c == '+' || c == '*' || c == '/' || c == '%' || + if (c == 0 || c == '+' || c == '*' || c == '/' || c == '%' || c == '\n' || (c == '-' && isdigit(line[idx + 1])) || c == EOF) return c; -- cgit v1.2.3