Apret une desallocation il affiche l'élément supprimer...!!
Résolu/Fermé
informatique_c
Messages postés
30
Date d'inscription
mardi 22 juillet 2014
Statut
Membre
Dernière intervention
17 mars 2016
-
8 nov. 2014 à 11:21
informatique_c Messages postés 30 Date d'inscription mardi 22 juillet 2014 Statut Membre Dernière intervention 17 mars 2016 - 9 nov. 2014 à 18:36
informatique_c Messages postés 30 Date d'inscription mardi 22 juillet 2014 Statut Membre Dernière intervention 17 mars 2016 - 9 nov. 2014 à 18:36
A voir également:
- Apret une desallocation il affiche l'élément supprimer...!!
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Supprimer élément introuvable - Guide
- Supprimer pub youtube - Accueil - Streaming
- Comment supprimer une application préinstallée sur android - Guide
4 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
8 nov. 2014 à 11:51
8 nov. 2014 à 11:51
Bonjour,
Déjà, ton code n'est pas bon au niveau des commentaires
Avant void affichage(), tu as mis un /* que tu ne refermes pas...
Ensuite, il faut être plus précis dans les explications.
Déjà, ton code n'est pas bon au niveau des commentaires
Avant void affichage(), tu as mis un /* que tu ne refermes pas...
Ensuite, il faut être plus précis dans les explications.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
8 nov. 2014 à 17:28
8 nov. 2014 à 17:28
Bonjour informatique_c
Faut pas être si impatient, si on ne répond pas c'est qu'on n'est pas dispo ;-).
Alors déjà, les variables globales sont à éviter. Il vaut mieux envoyer les variable en paramètre.
Ensuite, il ne faut pas mettre de & dans les scanf("%s", ...).
Par exemple :
scanf("%s",&q->nom); doit être transformé en
scanf("%s",q->nom);.
Je te laisse corriger tous les scanf("%s", ...).
Et enfin, le gros problème se trouve dans la fonction supprimer().
Tu "supprimes" l'élément courant, mais il faut bien penser à rattacher l'élément d'avant à l'élément d'après. Je te laisse réfléchir sur ce point.
Cdlt,
Faut pas être si impatient, si on ne répond pas c'est qu'on n'est pas dispo ;-).
Alors déjà, les variables globales sont à éviter. Il vaut mieux envoyer les variable en paramètre.
Ensuite, il ne faut pas mettre de & dans les scanf("%s", ...).
Par exemple :
scanf("%s",&q->nom); doit être transformé en
scanf("%s",q->nom);.
Je te laisse corriger tous les scanf("%s", ...).
Et enfin, le gros problème se trouve dans la fonction supprimer().
Tu "supprimes" l'élément courant, mais il faut bien penser à rattacher l'élément d'avant à l'élément d'après. Je te laisse réfléchir sur ce point.
Cdlt,
informatique_c
Messages postés
30
Date d'inscription
mardi 22 juillet 2014
Statut
Membre
Dernière intervention
17 mars 2016
1
8 nov. 2014 à 21:09
8 nov. 2014 à 21:09
bonjour fiddy et merci beaucoup pour vautre repense je vais corriger et voire se qui manque par suite merci encore... ^_^
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
8 nov. 2014 à 22:28
8 nov. 2014 à 22:28
Bonsoir
En plus de ce que @fiddy a dit en va éviter de mettre des
Puis découpon le programme en sous-programme c'est-à-dire, une fonction inséré qui va dynamiquement allouer les espaces nécessaires des cellule et ajouté automatiquement les donner et préparer le terrain pour la cellule suivante une fonction afficher pour afficher l'ensemble de donner et ta fameuse fonction supprimer une cellule en envoyant vrais ou faux.
Dans mon exemple, j'ai fait simple et pas optimiser on partons de ta structure initiale de plus, le choix des pointeurs en <gras>nom d'utilisateurs est mieux qu'une taille fixe car en ne sait pas réellement combien un nom peut prendre en taille surtout si c'est un non composer cas russe par exemple
Bref je tiens a précisé que c'est un exemple le code n'est pas optimisé et ont peut mieux faire.
à bientôt
En plus de ce que @fiddy a dit en va éviter de mettre des
typedefpartout "one" suffit.
Puis découpon le programme en sous-programme c'est-à-dire, une fonction inséré qui va dynamiquement allouer les espaces nécessaires des cellule et ajouté automatiquement les donner et préparer le terrain pour la cellule suivante une fonction afficher pour afficher l'ensemble de donner et ta fameuse fonction supprimer une cellule en envoyant vrais ou faux.
Dans mon exemple, j'ai fait simple et pas optimiser on partons de ta structure initiale de plus, le choix des pointeurs en <gras>nom d'utilisateurs est mieux qu'une taille fixe car en ne sait pas réellement combien un nom peut prendre en taille surtout si c'est un non composer cas russe par exemple
Bref je tiens a précisé que c'est un exemple le code n'est pas optimisé et ont peut mieux faire.
à bientôt
#include <stdio.h> #include <stdlib.h> #include <string.h> //Variable type Bool typedef enum{ false, true}bool; //Structure de donnée typedef struct s_Elev{ char *pNon; char *pPre; float fVal; unsigned int iPos; struct s_Elev *pN; }ts_Elev; /** * Insère les informations **/ void f_AddEleves( ts_Elev *pData, const char *pN,const char *pP, const float fVal ){ ts_Elev *p = pData; unsigned int i = 0; /** * Recherche dynamique de * la cellule à alouer **/ while( p->pN ){ i++; p = p->pN; } //Allocation de la cellule p->pN = (ts_Elev*)calloc( 1, sizeof(struct s_Elev) ); if( p->pN == NULL ){ perror( "Allocation pour new Elève\n" ); exit( EXIT_SUCCESS ); } p = p->pN; //Allocation sans contrôle de la nouvelle cellule p->pNon = (char*)calloc( strlen(pN), sizeof(char) ); p->pPre = (char*)calloc( strlen(pP), sizeof(char) ); //Ajout des informations p->iPos = i++; p->fVal = fVal; strcpy( p->pNon, pN ); strcpy( p->pPre, pP ); //Mise à nulle le pointeur suivant p->pN = NULL; } //Affiche la liste void f_AfficherListe( ts_Elev *pData ){ ts_Elev *p = pData; while( p ){ printf( "[\t%d\t]\t", p->iPos ); printf( "Nom\t:%s\t", p->pNon ); printf( "Prénom\t:%s \t", p->pPre ); printf( "Notes\t:%lf \n", p->fVal ); p = p->pN; } } /** * A faire **/ /*bool f_Suprimer( ts_Elev *pData, const char *pN ){ ts_Elev *p = pData; ts_Elev *o = NULL; while( (p->pN != NULL) && ( /*quelquechose != Quelquechose) ){ /*faire quelque chose } ( ... ){ free( o ); return ( true ); } return ( false ); }*/ //Programme Princiaple int main( void ){ ts_Elev ListE; (&ListE)->pN = NULL; f_AddEleves( &ListE, "Toto", "Titi", 0.14 ); f_AddEleves( &ListE, "Caca", "Bonb", 10.14 ); f_AddEleves( &ListE, "Verb", "sylv", 15.14 ); f_AddEleves( &ListE, "Piko", "Yesa", 9.14 ); f_AddEleves( &ListE, "Inté", "Géni", 20.00 ); f_AddEleves( &ListE, "ZigZ", "Flem", 0.1 ); f_AfficherListe( (&ListE)->pN ); /*if( f_Suprimer( (&ListE)->pN, "Verb" ) ){ printf( "Valeur Suprimer\n" ); } else printf( "La valeur à suprimer Existe pas\n" ); f_AfficherListe( (&ListE)->pN );*/ //Free de la liste à faire return ( EXIT_SUCCESS ); }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
8 nov. 2014 à 22:50
8 nov. 2014 à 22:50
Attention à ne pas trop abuser du gras ;-).
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
8 nov. 2014 à 23:01
8 nov. 2014 à 23:01
Roooooo , c'est pour marquer les points important :)
informatique_c
Messages postés
30
Date d'inscription
mardi 22 juillet 2014
Statut
Membre
Dernière intervention
17 mars 2016
1
9 nov. 2014 à 18:36
9 nov. 2014 à 18:36
meciiiiiiiii sambia39 j'apprend de nouveaux trucs avec vous comme ( le perror() ) par ex merci boucoup
informatique_c
Messages postés
30
Date d'inscription
mardi 22 juillet 2014
Statut
Membre
Dernière intervention
17 mars 2016
1
8 nov. 2014 à 16:06
8 nov. 2014 à 16:06
j'attend vaux repenses avec impatience
8 nov. 2014 à 12:04
8 nov. 2014 à 12:12
mon problème c'est le chaînage des élément de ma liste je veux dire que mémé si je fais pas la dés-allocation d'un élément il doit être disparu en affichage pasque j'ai fais (la ligne 70) j'ai mis l'adresse du suivant dans le suiv de l'element précédent de l'element que je veux supprimer
8 nov. 2014 à 12:15