Tom's Guide > Forum > Programmation > Programmation en c
Mot :    Pseudo :           
 

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.





Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Et tu as fait quoi ?

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

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

Répondre à Anonyme

#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[i]!='\0';i++)
{
if( (nom[i]=='<') || (nom[i]=='.') || (nom[i]=='(') || (nom[i]=='{') || (nom[i]=='[') )

empiler(nom[i]);

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

{

if(1==correspond(nom[i],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;
}

Répondre à Anonyme
Tom's Guide > Forum > Programmation > Programmation en c
Aller à :

Il y a 724 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens