Votre question

Programmation en c

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
Anonyme
19 Janvier 2009 18:44:37

salut tous le monde,j'essais avec se programme mais je ne peut pas le realiser aide moi SVP.et merci d'avance.
Sujet 7:
il s'agit de créer un compilateur d'instructions simplifié à l'aide d'un TDA pile.
Le principe du compilateur consiste à:
Parcourir l'instruction à compiler, caractère par caractère, de gauche à droite.
*si le caractère rencontré est < ou ' ou ( ou { ou [ alors on l'empile.
*si le caractère rencontré est > ou , ou ) ou } ou ] alors on dépile son correspondant
De la pile: s'ils sont correspondant on continue le parcours
Sinon on annonce une erreur.
Exemple:
pile

>
)
Elément rencontré " >"
Alors dépiler un élément de la pile " < "
Vérifier correspondance
Ok.


[
(
élément rencontrer ")"
Alors dépiler un élément de la pile "["
Verifier correspondance
Non conforme message d'erreur.





Autres pages sur : programmation

a b L Programmation
19 Janvier 2009 19:44:11

Et tu as fait quoi ?
m
0
l
Anonyme
19 Janvier 2009 19:48:37

si tu veut ma reponse je l'envoyer maintenant mais elle contint des erreur que je ne peut pas les resolus,si tu veut m'aider j'appresier ça
m
0
l
Anonyme
19 Janvier 2009 19:51:40

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

typedef struct Noeud {
char tas;
struct Noeud *suivant;
}noeud;
noeud *premier=NULL;
noeud *p;

void initialise();
void empiler(char x);
char depiler();
int correspond(char , char);

void main()
{

int i;
char nom[100];
noeud *debut,*z,*t;

void initialise();

clrscr();

printf("donner une chaine de caractere\n");
scanf("%s",&nom);

for(i=0;nom!='\0';i++)
{
if( (nom=='<') || (nom=='.') || (nom=='(') || (nom=='{') || (nom=='[') )

empiler(nom);

else if( (nom=='>') || (nom==',') || (nom==')') || (nom=='}') || (nom==']') )

{

if(1==correspond(nom,depiler()))

continue;

else printf("\nerreur\n");

}

}
printf("\n\nla compilation reussite\n");

getch();

}

void initialise()

{

noeud *debut,*z;
debut=(struct Noeud *)malloc(sizeof(*debut));
assert(debut!=NULL);
z=(struct Noeud *)malloc(sizeof(*z));
assert(z!=NULL);
debut->suivant=z;
z->tas=0;
z->suivant=z;

}


void empiler(char x)

{

noeud *t;
noeud *debut;
t=(struct Noeud*)malloc(sizeof(*t));
assert(t!=NULL);
t->tas=x;
t->suivant=debut->suivant;
debut->suivant=t;

}

char depiler()

{

char y;
noeud *debut;
noeud *t;
assert(debut!=NULL);
t=debut->suivant;
debut->suivant=t->suivant;
y=t->tas;
free(t);
return(y);

}


int correspond(char e,char l)

{

if(e==l)
return 1;
else
return 0;
}
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS