/* * simple-calculator. */ #include #include #include #include int vars [5]; void eval (char *s); int val (char var); int set (char dest, int val); int main (void) { char s [100]; int i; while (gets (s) != NULL) { eval (s); } for (i = 0; i < 5; i++) { printf ("%c=%d\n", i + 'a', val (i + 'a')); } printf ("n=0\n"); return 0; } void eval (char *s ) { char dest; int op1, op2, v; char op, *ptr; dest = s [0]; ptr = strstr (s, "+"); if (!ptr) ptr = strstr (s, "*"); op = *ptr; ptr++; if (isalpha (*ptr)) { op2 = val (*ptr); } else op2 = atoi (ptr); ptr = strtok (&s[2], "*+"); if (isalpha (*ptr)) op1 = val (*ptr); else op1 = atoi (ptr); switch (op) { case '+': v = op1 + op2; break; case '-': v = op1 - op2; break; case '*': v = op1 * op2; break; } printf ("%d\n", v); set (dest, v); } int val (char var) { if (var == 'n') return 0; else return (vars [var - 'a']); } int set (char dest, int val) { if (dest == 'n') return 0; else vars [dest - 'a'] = val; return val; }