Dans ta boucle intérieure, tu empiles dans tabc les opérateurs '+', '-', '*' et '/'. Par contre tu n'empiles dans tabi que des entiers entre 0 et 9 compris. Par contre si l'utilisateur entre un décimal comme:
Entrez votre expression completement parenthesee: (4.5 + 2)
ton programme est dans les choux!!!
La partie acquisition de l'expression est presque OK...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<locale.h>
int main(void)
{
char tabc[4] = {'\0'};
float tabi[4] = {0};
int i,j,k;
char expression[30];
/* Usage*/
printf("Programme-TP3 LAMOUROUX Damien (C) 3iL-A1\n");
printf("-----------------------------------------\n\n");
printf("Exemple: (4.5 + (-5 * 9.2))\n");
printf("Entrez votre expression completement parenthesee: ");
fflush(stdout); /* Vide le tampon de la sortie standard */
fgets(expression, 30, stdin);
i= j = k = 0;
/* ... */
return EXIT_SUCCESS;
} |
A mon avis la conception du reste du code est à revoir afin de gérer correctement les décimaux et les nombres négatifs. Attention également à la longueur des tableaux tabc et tabi. Dans ton programme, tu empiles tant que tu ne rencontres pas le caractèpre ')'. Si j'entre l'expression (1+2+3+4+5+6), qui est coreectement parenthésée, je dépasse la capacité des tableaux tabc et tabi.
Le mieux est de reprendre le problème avec un crayon et un papier et de voir quelles sont les situations (essaie d'être le plus exhaustif possible) que devra gérer ton code. Ensuite écrit l'algorithme en pseudocode, et l'implémentation en C te semblera évidente à quelques détails prêts pour lesquels nous sommes là pour t'aider.
Thierry
Partager