Téléchargement
illégal
Posez votre question Signaler

Validité d'une expression mathématique

aki - Dernière réponse le 8 nov. 2010 à 00:21
Bonjour, svp qqn pourrait-il me dire pourquoi mon prog ne marche pas ??????
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
typedef struct stack stack;
struct stack {
char vec[MAX];
int sommet;
};
stack st;
void stackinit()
{ st.sommet=-1;
return;
}
int stackempty()
{ if(st.sommet=-1) return 1 ;
else return 0;
}
void stackpush(char c)
{ if(st.sommet==MAX-1)
{perror("stackoverflow");
return;
}
else
{
st.sommet++;
st.vec[st.sommet]=c;
return ;}
}
char stackpop()
{char result;
if(stackempty())
{return('*');}
else
{
result=st.vec[st.sommet];
st.sommet--;
return(result);
}
}
main()
{ char o;
char c;
int correct=1;
char x='a';
stackinit();
if(stackempty())
printf("la pile est vide\n");
stackpush(x);
printf("%c\n",st.vec[st.sommet]);
stackpop();
printf("%d",st.sommet);
printf("tapez votre expression:\n");
stackinit();
while((c=getchar())!='\n')
{ switch(c)
{ case '(' : stackpush(c) ; break;
case '{' : stackpush(c) ; break;
case '[' : stackpush(c) ; break;
case ')' : {o=stackpop() ; if(o!='(') correct=0;};break;
case '}' : {o=stackpop() ; if(o!='{') correct=0;};break;
case ']' : {o=stackpop() ; if(o!='[') correct=0;};break;
}
}
if((stackempty()==1) && (correct==1))
printf("\nl'expression est correcte\n");
else
printf("\nl'expression est incorrecte\n");
getch();
}
Lire la suite 

Validité d'une expression mathématique »

2 réponses
Réponse
+0
moins plus
enfait la premiere partie n'est qu'un essaie on peut bien s'en passer mais sa ne marche tjrs pas
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
typedef struct stack stack;
struct stack {
char vec[MAX];
int sommet;
};
stack st;
void stackinit()
{ st.sommet=-1;
return;
}
int stackempty()
{ if(st.sommet=-1) return 1 ;
else return 0;
}
void stackpush(char c)
{ if(st.sommet==MAX-1)
{perror("stackoverflow");
return;
}
else
{
st.sommet++;
st.vec[st.sommet]=c;

return ;}
}
char stackpop()
{char result;
if(stackempty())

{return('*');}

else
{
result=st.vec[st.sommet];
st.sommet--;
return(result);
}
}
main()
{ char o;
char c;
int correct=1;

printf("tapez votre expression:\n");
stackinit();
while((c=getchar())!='\n')
{ switch(c)
{ case '(' : stackpush(c) ; break;
case '{' : stackpush(c) ; break;
case '[' : stackpush(c) ; break;
case ')' : {o=stackpop() ; if(o!='(') correct=0;};break;
case '}' : {o=stackpop() ; if(o!='{') correct=0;};break;
case ']' : {o=stackpop() ; if(o!='[') correct=0;};break;
}
}
if((stackempty()==1) && (correct==1))
printf("\nl'expression est correcte\n");
else
printf("\nl'expression est incorrecte\n");
getch();
}
Ajouter un commentaire
Réponse
+0
moins plus
bonjour,

à part le if dans stackempty(), c'est tout bon.

cdlt
Ajouter un commentaire
Ce document intitulé « validité d'une expression mathématique » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?