PILE AIDE [C] moi svp
Résolu/Fermé
A voir également:
- PILE AIDE [C] moi svp
- Pile carte mere - Guide
- L'accu pile est déchargé nikon coolpix - Forum Nikon
- Pile bios empêche démarrage pc - Forum BIOS
- Taille pile manette wii - Forum Wii
- Pile manette wii ✓ - Forum Wii
5 réponses
Azer_Ty
Messages postés
104
Date d'inscription
vendredi 31 octobre 2008
Statut
Membre
Dernière intervention
4 juillet 2011
60
7 févr. 2009 à 02:34
7 févr. 2009 à 02:34
En gros tu veux empiler des chaines de caractères, c'est ça ?
Si oui le problème est là :
char* correspond à une chaine de caractères, donc pour avoir un tableau de chaines de caractères utilise plutôt char*[20] par exemple.
Si non je ne vois pas.
Si oui le problème est là :
char* correspond à une chaine de caractères, donc pour avoir un tableau de chaines de caractères utilise plutôt char*[20] par exemple.
Si non je ne vois pas.
Bonjour
Si comme tu le dis ce sont bien des char que tu veux empiler (et pas des chaînes) :
1-
Ta fonction oid empiler(pile *p,char *v){
if(p->n < p->max-1) {
p->n++;
p->element=v; }
n'est pas cohérente . Le paramètre v passé devrait être un char, pas un char * puis que c'est un caractère que tu empiles et pas une chaîne.
2- Dans listerpile, tu pourrais utiliser %c plutôt que %d pour afficher (essaye pour voir la différence)
3- dans ton case 3 (insertion) tu ne devrais insérer que le premier caractère et pas toute la chaine : empiler (ppl,v[0])
Si comme tu le dis ce sont bien des char que tu veux empiler (et pas des chaînes) :
1-
Ta fonction oid empiler(pile *p,char *v){
if(p->n < p->max-1) {
p->n++;
p->element=v; }
n'est pas cohérente . Le paramètre v passé devrait être un char, pas un char * puis que c'est un caractère que tu empiles et pas une chaîne.
2- Dans listerpile, tu pourrais utiliser %c plutôt que %d pour afficher (essaye pour voir la différence)
3- dans ton case 3 (insertion) tu ne devrais insérer que le premier caractère et pas toute la chaine : empiler (ppl,v[0])
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
7 févr. 2009 à 11:00
7 févr. 2009 à 11:00
Salut,
Peut être une implémentation par liste chaînée est plus facile;-)
Peut être une implémentation par liste chaînée est plus facile;-)
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Element{ char nom[50]; struct Element *suivant; }Pile; Pile *Initialiser(){ return NULL; } int PileVide(Pile *P){ if(P==NULL) return 1; return 0; } int PilePleine(Pile *P){ return 0; // elle ne peut pas être vide // toutefois la taille de la pile est limité par la mémoire } void Empiler(Pile **P,char *nom){ Pile *nouveau; nouveau = (Pile *) malloc (sizeof(Pile)); strcpy(nouveau->nom,nom); nouveau->suivant = *P; *P = nouveau; } int Depiler(Pile **P, char *nom){ Pile *suppr; if(PileVide(*P)) return 0; strcpy(nom,(*P)->nom); suppr = *P; *P=(*P)->suivant; free(suppr); return 1; } void Detruire(Pile **P){ Pile *suppr; while(*P!=NULL){ suppr=*P; *P=(*P)->suivant; free(suppr); } *P=NULL; } void Affiche(Pile *P){ Pile *courant; for(courant=P;courant!=NULL;courant=courant->suivant) printf("%s ",courant->nom); printf("\n"); } int main() { char mot[50];; Pile *P; P = Initialiser(); printf("Entrez mot : "); scanf("%s",mot); Empiler(&P,mot); Affiche(P); printf("Entrez mot : "); scanf("%s",mot); Empiler(&P,mot); Affiche(P); printf("Entrez mot : "); scanf("%s",mot); Empiler(&P,mot); Affiche(P); if(Depiler(&P,mot)) printf("Dernier Entré / Premier Sorti : %s\n",mot); Affiche(P); Detruire(&P); Affiche(P); return 0; }Resultat
lami20j@debian:~/trash/ccm_c$ gcc ccm48_pile_listechainee.c lami20j@debian:~/trash/ccm_c$ ./a.out Entrez mot : AAA AAA Entrez mot : BBB BBB AAA Entrez mot : CCC CCC BBB AAA Dernier Entré / Premier Sortie : CCC BBB AAA
S'il vous plait pouvez vous modifier tout le programme
sa va pas vous prendre trop de temps
moi j'arrive pas a le faire
svp :(
sa va pas vous prendre trop de temps
moi j'arrive pas a le faire
svp :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question