salut tout le monde
là j'essaie de faire une verification syntaxique d'une expression mathematique pour ce faire j'ai eu recours aux piles , cependant il s'est averé que j'ai un probleme
je vous laisse avec mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100 
#define true 1
#define false 0
 
 
struct stack {
       char vec[MAX];
       int sommet;
       }st;
void stackinit(){
     st.sommet =-1;
     return;
     }
 
int stackempty(){
        if(st.sommet!=-1) return false ;
        else return true;
        }
char pop(){
     char result;
     if(stackempty()){
                       perror("stack underflow");exit(1);
                       }
                       else{
                            result = st.vec[st.sommet];
                            st.sommet--;
                            return(result);
                            }
                            }
void push(char x){
     if(st.sommet== 99){
                          perror("stack overflow"); exit(2);}
                          else{
                               st.sommet++;
                               st.vec[st.sommet] =x;}
                               return;}
 
main(){
       char ex;stackinit();
       puts("entrez votre expression");
       scanf("%s",&ex);
       while(ex=getchar() != '\n'){
                          switch(ex){
                                     case '(': push(ex);break;
                                     case '{': push(ex);break;
                                     case '[': push(ex);break;
                                     case ')': pop();break;
                                     case ']': pop();break;
                                     case '}': pop();break;
                                     }
                                     if(stackempty()){
                                                      puts("l'expression est vraie");
                                                      getch();
                                                      }
                                                      else{
                                                           puts("l'expression est fausse");getch();
                                                           }
 
       }}
y'a surement une erreu mais j'ignore ou ? :s