#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[]) { pile p = pile_creer(); for (int i = 1; i < argc; i++) { char * s = argv[i]; if (isdigit(s[0])) { pile_empile(p, strtoint(s)); } else { int arg2 = pile_depile(p); int arg1 = pile_depile(p); pile_empile(p, operation(s[0], arg1, arg2)); } } printf("%d\n", pile_depile(p)); assert(pile_vide(p)); pile_detruire(p); return EXIT_SUCCESS; }