#include #include #include #include #include #include "pile.h" /* Exemple d'utilisation d'une pile. Ce programme peut être amélioré avec l'utilisation de strtol */ static int strtoint(char * s) { int val = 0; for (int i = 0; s[i] != '\0'; i++) { assert(isdigit(s[i])); val = val * 10 + s[i] - '0'; } return val; } static int operation(char op, int arg1, int arg2) { assert(op == '+' || op == '-' || op == '*' || op == '/'); int val; switch (op) { case '+' : val = arg1 + arg2; break; case '-' : val = arg1 - arg2; break; case '*' : val = arg1 * arg2; break; case '/' : val = arg1 / arg2; break; } return val; } int main(int argc, char * argv[]) { for (int i = 1; i < argc; i++) { char * s = argv[i]; if (isdigit(s[0])) { pile_empile(strtoint(s)); } else { int arg2 = pile_depile(); int arg1 = pile_depile(); pile_empile(operation(s[0], arg1, arg2)); } } printf("%d\n", pile_depile()); assert(pile_vide()); return EXIT_SUCCESS; }