cleopatre1988
Messages postés4Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention19 mai 2008
-
13 mai 2008 à 22:24
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 2009
-
15 mai 2008 à 01:31
salut
,j'aimerai avoir un programme qui donne la notation polonaise d'une expression
en langage c,j'ai fais un programme pour ceci mais il ne fonctionne pas correctement
j'ai cherche dans le site et je l'ai trouve en java.
bon merci.
cleopatre1988
Messages postés4Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention19 mai 2008 14 mai 2008 à 23:44
salut bon voila mon programme ;le probleme reside dans la fonction d'affichage
car quand je fais le test sur les elements a affiche il bloque et quand
j'enleve le test il marche.
printf ("Entrez un mot : ");
scanf ("%s", nom);
empiler (tas,nom);
printf ("La pile (%d elements): \n",tas->taille);
printf("\n********** Haut de la PILE 1 **********\n");
affiche(tas);
printf("__________ Bas de la PILE 1__________\n\n");
printf("\n********** Haut de la PILE **********\n");
printf("__________ Bas de la PILE __________\n\n");
printf ("Entrez un mot : ");
scanf ("%s", nom);
empiler (tas,nom);
printf ("La pile (%d éléments): \n",tas->taille);
printf("\n********** Haut de la PILE **********\n");
printf("__________ Bas de la PILE __________\n\n");
printf ("Entrez un mot : ");
scanf ("%s", nom);
empiler (tas,nom);
printf ("La pile (%d éléments): \n",tas->taille);
printf("\n********** Haut de la PILE **********\n");
affiche(tas);
printf("__________ Bas de la PILE __________\n\n");
printf ("\nLe dernier entré (LastInFirstOut) %s sera supprimé",
pile_donnee(tas));
printf ("\nLe dernier entré est supprime\n");
depiler (tas);/* suppression de dernier element entre */
printf ("La pile (%d éléments): \n",tas->taille);
printf("\n********** Haut de la PILE **********\n");
affiche(tas);
printf("__________ Bas de la PILE __________\n\n");
system ("pause");
return 0;
}
void initialisation (Pile *tas)
{
tas->debut = NULL;
tas->taille=0;
}
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 15 mai 2008 à 01:31
Bonsoir,
1) courant->donnee est une chaîne de caractères donc pas de comparaison avec un caractère !
Il faut courant->donnee[0] != '(' à condition que le caractère soit bien en première position dans donnee !
2) Dans la fonction empiler() :
//nouveau_element->donnee = (char)malloc(50 * sizeof(char));
devient :
nouveau_element->donnee = (char*)malloc((strlen(donnee) + 1) * sizeof(char));
3) Il faudra ajouter la libération mémoire de toute la pile à la fin.
4) On ne met pas de prototypes de fonctions dans une fonction (au début de main()).