Programme en C

itachi070 Messages postés 1 Statut Membre -  
 itachi070 -
Bonjour,
J'ai besion d'aide pour se programme
Compilateur d’instructions
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 en dépile son correspondant de la pile.
Si ils sont correspondants on continu le parcours
Sinon on annonce une erreur
Exemple : printf ( « le ieme élément est :%d »,t[i) ;
Elément rencontré »

«
(
Alors dépiler un élément de la pile «
Vérifier correspondance
Ok

«
(

Elément rencontré )
Alors dépiler un élément de la pile [

[
(
Vérifier correspondance
Non conforme
Message d’erreur

Deux solutions doivent être réalisées : implémentation statistique et implémentation dynamique.
Le code source est stocké dans un fichier. La compilation s’arrête soit à la rencontre d’une erreur, soit lorsque la pile est vide ; dans ce cas de figure un message est affiché pour annoncer une compilation réussite.
Configuration: Windows Vista
Firefox 3.5.7

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    0
    1. itachi070
       
      MERCI pour le conseil
      mais j'étais vraiment dans une contrainte de temps. c'est pour cette raison que j'ai fait ceci
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > itachi070
         
        Le problème c'est que tu n'es pas tout seul et ils ont tous à peu près le même raisonnement ;-\
        0
      2. itachi070 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        vous peuvez me guider pour ce travail?
        0
      3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > itachi070
         
        Moi, non, désolé, le C c'est pas mon truc ;-((

        Par contre il serait bien que vous y mettiez un peu de vous et affichiez ce que vous avez déjà entrepris...
        0
      4. itachi070 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        c une partie que jé traiter




        #include<stdio.h>
        #include<string.h>
        #define Ncmax 100
        #define Ntmax 50




        /********** déclaration des procédures **********/

        void init (char T[Ntmax]);
        void saisie (char ch[Ncmax]);
        void empile (char T[Ntmax], char x);
        char depile (char T[Ntmax]);
        int fin (char T[Ntmax]);
        char correspondant(char x);

        /********* le programme principal ***********/

        void main()
        {
        char instruction[Ncmax];
        char y;
        int i;
        char T[Ntmax];
        saisie(instruction);
        printf ("\n Voici votre instruction:\n \t %s\n ",instruction);
        init (T);
        i=0;
        do
        {
        switch (instruction[i])
        {
        case ('('):{
        empile (T,instruction[i]);
        i++;
        }; break;
        case ('{'):{
        empile (T,instruction[i]);
        i++;
        }; break;
        case ('['):{
        empile (T,instruction[i]);
        i++;
        }; break;
        case (')'):{
        y=depile(T);
        if (correspondant(instruction[i])!=y)
        {
        printf ("Vous avez commis une erreur au niveau du caractere %i !\n",i);
        stop=1;
        }
        else i++;
        }; break;
        case ('}'):{
        y=depile(T);
        if (correspondant(instruction[i])!=y)
        {
        printf ("Vous avez commis une erreur au niveau du caractere %i !\n",i);
        stop=1;
        }
        else i++;
        }; break;
        case (']'): {
        y=depile(T);
        if (correspondant(instruction[i])!=y)
        {
        printf ("Vous avez commis une erreur au niveau du caractere %i !\n",i);
        stop=1;
        }
        else i++;
        }; break;
        default: i++;
        }
        }
        while ((i<=strlen(instruction))&&(stop==0));
        if (T[0]=='0')
        printf ("\n Compilation reussie!");
        getch();
        }
        0