/****************************************************/ /*calcmain.c */ /*contains the main function */ /*compile together with other files that */ /*contains the rest of the program. */ /*gcc calcmain.c calcgetop.c calcstack.c calcgetch.c*/ /****************************************************/ #include#include /*for atof()*/ #include "calc.h" #define MAXOP 100 /*max size of operand or operator*/ main() { int type; double op2; char s[MAXOP]; while ((type = getop(s)) != EOF){ switch (type) { case NUMBER: push(atof(s)); break; case '+': push(pop() + pop()); break; case '*': push(pop() * pop()); break; case '-': op2 = pop(); push(pop() - op2); break; case '/': op2 = pop(); if (op2 != 0.0) push(pop() / op2); else printf("error: zero divisor\n"); break; case '\n': printf("\t%.8g\n", pop()); break; default: printf("error: unknown command %s\n", s); break; } } return 0; }