IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Liste chainee]modifier un element


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Par défaut [Liste chainee]modifier un element
    bONJOUR
    j'ai cree une liste chainéé pour la gestion des etudiants
    voila la structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct etudiant etd;
    struct etudiant{
           int cne;
           char nom[20];
           char prenom[20];
           etd *suivant;
           };
    je veux modifier un etudiant quelqnq donc j'ai utilisé ce fonction
    la modification succés quand l'element est le premier dans la list
    le problem quand j'insrere un etudiant a la fin de la liste je ne peux le modifier il afficher le messgae "---CNE n'exist pas"
    la recherche d'un etudiant fait par son CNE :son numero

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    etd *ModifierEtd(etd *e1)   {
        etd *tmp=e1;
        int cne2;
        printf("\n------------La Modification--------------\n");
        printf("\nDonner le CNE de l'etudiant pour modifier son informations:");
        scanf("%d",&cne2);
        while(tmp!=NULL){
                         if(e1->cne==cne2){
                                         printf("\nL'etudiant exist dans la liste....");
                                         printf("donner le nouveau CNE:");
                                         scanf("%d",&e1->cne);
                                          printf("donner le nouveau nom:");
                                         scanf("%s",e1->nom);
                                         printf("donner le nouveau prenom:");
                                         scanf("%s",e1->prenom);
                                          return e1;
                                          }
                         tmp=tmp->suivant;
     
                         }
     printf("---CNE n'exist pas\n");     
     }
    PS;pour l'insrertion des etudiant j'ai utilisé les fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AjoutAuDebutetd(e1);
    AjoutEnFInetd(e1);
    Merci bcp

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Tu aurais déjà pu faire un effort sur la rédaction de ce post...

    Si je comprend bien, le CNE sert d'identifiant pour chacun de tes étudiants. Dans ce cas là, on peut trier la liste d'étudiant sur le CNE ce qui permet d'effectuer des recherches plus rapides.

    Sinon ton problème est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     if(e1->cne==cne2){
    Je pense que tu devrais pouvoir trouver toi-même ce qui ne va pas sur cette ligne.

    C'est le même problème que sur ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    scanf("%d",&e1->cne);
    scanf("%s",e1->nom);
    scanf("%s",e1->prenom);
    Regarde bien ce que tu fais à la ligne 18.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Par défaut
    Neckara

    Merci pour votre reponse
    je pense le problem est:

    il faut remplacer ce code

    par

    vrai ?!

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Exact car dans votre boucle c'est avec tmp que vous parcourez votre liste donc e1 reste constant.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 829
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par C_PRogr Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    etd *ModifierEtd(etd *e1)   {
        etd *tmp=e1;
        int cne2;
        printf("\n------------La Modification--------------\n");
        printf("\nDonner le CNE de l'etudiant pour modifier son informations:");
        scanf("%d",&cne2);
        while(tmp!=NULL){
                         if(e1->cne==cne2){
                                         printf("\nL'etudiant exist dans la liste....");
                                         printf("donner le nouveau CNE:");
                                         scanf("%d",&e1->cne);
                                          printf("donner le nouveau nom:");
                                         scanf("%s",e1->nom);
                                         printf("donner le nouveau prenom:");
                                         scanf("%s",e1->prenom);
                                          return e1;
                                          }
                         tmp=tmp->suivant;
     
                         }
     printf("---CNE n'exist pas\n");     
     }

    Salut
    Ta fonction de type etd* renvoie qqchose uniquement si l'étudiant est trouvé. Que renvoie-t-elle sinon ??? Apparemment rien...

    Accessoirement tu peux remplacer ton while par un for(). Ce sera pareil à l'exécution mais plus élégant dans l'écriture...
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (tmp=e1; tmp != NULL; tmp=tmp->suivant)
    {
        ...
    }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre régulier
    Homme Profil pro
    futur ingenieur
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : futur ingenieur

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Par défaut trie au fur et a mesur de la lecture
    svp si je veux lire une liste des valeurs et les tries au fur et a mesure dans une liste chainée comment faire ??
    svp c urgent

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Si tu as des questions différente du sujet initial, créé ton propre sujet.

    Ensuite, je suis prêt à parier que la lecture et le trie de la liste font l'objet d'un exercice que tu as à faire. Dans ce cas là, il suffit de :
    - lire ton cours ;
    - réfléchir un peu ;
    - créer un sujet pour montrer ce que tu auras fait en posant tes questions.

    Sinon, tu remarqueras qu'en haut de cette page, il y a une fonction de recherche. Et ce n'est pas les tutoriels sur les listes chaînées qui manque...

    Sinon, il y a toujours google qui pourra t'aider.

    Avec un minimum de recherche tu trouveras très vite ton bonheur.

    Et puis sérieusement avec un crayon et un bout de papier, on trouve très facilement l'algorithme. Essaye de voir ce qu'il faudra faire à chaque insertion en dessinant un petit schéma.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/04/2010, 22h36
  2. Parcourir et afficher les elements d'une liste chainee
    Par student_ dans le forum Débuter
    Réponses: 15
    Dernier message: 22/12/2009, 21h48
  3. ajout d'un element dans une liste et modifier son nom
    Par fibi007 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/04/2008, 17h50
  4. Suppression d'un element avec liste chainee
    Par gentil dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 04/10/2007, 13h50
  5. liste chainee, revenir a l'element precedent
    Par Pitou5464 dans le forum C
    Réponses: 13
    Dernier message: 17/10/2006, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo