All pastes #224282 Raw Edit

Untitled

public c v1 · immutable
#224282 ·published 2006-10-27 09:23 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#define TAILLE_PILE 100voidimprime(const int *pile, int niveau){  int index;  for (index= 0; index < niveau; index++)    printf("%d ", pile[index]);  putchar('\n');}intcalcule(int *pile, int niveau, const char *chaine){  int nombre;  if (sscanf(chaine, "%d", &nombre) == 1)    {      if (niveau < TAILLE_PILE)        {          pile[niveau]= nombre;          return niveau + 1;        }      else        {          printf("Pas assez de place dans la pile\n");          return -1;        }    }  else if (strcmp(chaine, "p") == 0)    {      imprime(pile, niveau);      return niveau;    }  else if (niveau > 1)    {      if (strcmp(chaine, "+") == 0)        pile[niveau - 2]= pile[niveau - 2] + pile[niveau - 1];      else if (strcmp(chaine, "-") == 0)        pile[niveau - 2]= pile[niveau - 2] - pile[niveau - 1];      else if (strcmp(chaine, "x") == 0)        pile[niveau - 2]= pile[niveau - 2] * pile[niveau - 1];      else if (strcmp(chaine, "/") == 0)        pile[niveau - 2]= pile[niveau - 2] / pile[niveau - 1];      else        {          printf("Operation inconnue: %s\n", chaine);          return -1;        }      return niveau - 1;    }  else    return -1;}int main(int argc, char **argv){  int pile[TAILLE_PILE];  int niveau= 0;  argc--; argv++;  while (argc > 0 && niveau != -1)    {      niveau= calcule(pile, niveau, *argv);      argv++; argc--;    }  if (niveau != -1) {    imprime(pile, niveau);    return EXIT_SUCCESS;  }  else    return EXIT_FAILURE;}