Programme en C

Fermé
itachi070 Messages postés 1 Date d'inscription jeudi 21 janvier 2010 Statut Membre Dernière intervention 21 janvier 2010 - 21 janv. 2010 à 23:28
 itachi070 - 22 janv. 2010 à 19:14
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.

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
21 janv. 2010 à 23:30
0
MERCI pour le conseil
mais j'étais vraiment dans une contrainte de temps. c'est pour cette raison que j'ai fait ceci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > itachi070
22 janv. 2010 à 19:08
Le problème c'est que tu n'es pas tout seul et ils ont tous à peu près le même raisonnement ;-\
0
itachi070 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
22 janv. 2010 à 19:10
vous peuvez me guider pour ce travail?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > itachi070
22 janv. 2010 à 19:12
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
itachi070 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
22 janv. 2010 à 19:14
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
GEEKSUPREME Messages postés 22 Date d'inscription vendredi 22 janvier 2010 Statut Membre Dernière intervention 15 mars 2010 1
22 janv. 2010 à 15:01
Apprends a programmer sur https://openclassrooms.com/fr/
0