#include #include #include #include #include #include "pile.h" /* Exemple d'utilisation d'une pile. Ce programme doit être amélioré pour éliminer la duplication de code. */ 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; } int main(int argc, char * argv[]) { for (int i = 1; i < argc; i++) { char * s = argv[i]; if (strcmp(s, "*") == 0) { int arg2 = pile_depile(); pile_empile(pile_depile() * arg2); } else if (strcmp(s, "+") == 0) { int arg2 = pile_depile(); pile_empile(pile_depile() + arg2); } else if (strcmp(s, "-") == 0) { int arg2 = pile_depile(); pile_empile(pile_depile() - arg2); } else if (strcmp(s, "/") == 0) { int arg2 = pile_depile(); pile_empile(pile_depile() / arg2); } else { pile_empile(strtoint(s)); } } printf("%d\n", pile_depile()); assert(pile_vide()); return EXIT_SUCCESS; }