begin process at 2012 05 29 21:19:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

probleme en listes chainées.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme en listes chainées.

jeudi 26 février 2009 à 16:29:36 | probleme en listes chainées.

ryuzaki

slt t le monde je suis un débutant en programmation, j"ai un problème d'accomplir mon mini projet en langage c.
je veux justement supprimer le premier élément de la liste, mais je n'arrive pas.
voila  le code, et j'espère quelqu'un de m'aider à trouver la solution........merci d'avance.
  
*******************************************************************
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
struct list
{   int num;
    char nom[20], prenom[20], filiere[20], niveau[10], date[10];
    struct list *psuivant;
};

//****************************FONCTION AJOUT**********************************

void ajout (list *tete)
    {
    FILE *db;
    list *n ;
    list *pcourant;
db=fopen("etudiant.txt","a+");
    n = (list*)malloc(sizeof (struct list))  ;
    pcourant=tete;
    if (tete!=NULL)
    {
        while (pcourant->psuivant != NULL)
              pcourant = pcourant->psuivant;
    }
    printf("\t\t.Enter le num¦ro             : ");
    scanf("%d",&n->num);
    printf("\t\t.Entrer le nom               : ");
    scanf("%s",n->nom ) ;
    printf("\t\t.Entrer le prenom            : ");
    scanf("%s",n->prenom );
    printf("\t\t.Entrer la date de naissance : ");
    scanf("%s",n->date ) ;
    printf("\t\t.Entrer la fili¦re           : ");
    scanf("%s",n->filiere ) ;
    printf("\t\t.Entrer le niveau            : ");
    scanf("%s",n->niveau );
    fprintf(db,"%d\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\n",n->num,n->nom,n->prenom,n->date,n->filiere,n->niveau);
    printf("\t-----------------------------------------------------------------\n");
    pcourant->psuivant=n;
    n->psuivant=NULL;
}
//****************************FONCTION SUPPRESSION***************************

void suppression (list *tete,char c[10])
{
    list *sup, *tmp;
    int s=0;
    sup=tete;
    tmp=tete;
     if (strcmp(sup->psuivant->nom,c)==0)
    {
     tmp=tete->psuivant;
     tete=tete->psuivant;
     tete=tete->psuivant->psuivant;
     free(tmp);
     printf("\t\t Suppression avec succ¦s\n\n");

     }
    
     
}


//****************************FONCTION RECHERCHE*****************************

void recherche(list *tete)
{
FILE *db;
int x=0,i;
char nom_recherche[10];
 list *rech;
 rech=tete;
 printf("\t\t-Entrer le nom que vous voulez chercher : ");
 scanf("%s",&nom_recherche);

     while (rech != NULL)
           {
         if (strcmp(rech->nom,nom_recherche)==0)
            {
          printf("\t\t-l'enregistrement est :\n");
          printf("\t\t\t.Num¦ro            : %d\n",rech->num);
          printf("\t\t\t.Nom               : %s\n",rech->nom);
          printf("\t\t\t.Pr,nom            : %s\n",rech->prenom);
          printf("\t\t\t.Date de naissance : %s\n",rech->date);
          printf("\t\t\t.Fili¦r            : %s\n",rech->filiere);
          printf("\t\t\t.Niveau            : %s\n",rech->niveau);
          printf("\n");
          x=1;
                }
        rech=rech->psuivant; 
         }

        
     if (x == 0)
         printf("\t\t l'enregistrement n'existe pas\n\n");

            db=fopen("etudiant.txt","r");
        for(i=0;i==3;i++)
          {
                fscanf(db,"%d%s%s%s%s%s",&rech->num,&rech->nom,&rech->prenom,&rech->date,&rech->filiere,&rech->niveau);

          if(strcmp(rech->nom,nom_recherche)==0)
                   {           printf("\t\t\t.Num¦ro            : %d\n",rech->num);
             printf("\t\t\t.Nom               : %s\n",rech->nom);
             printf("\t\t\t.Pr,nom            : %s\n",rech->prenom);
             printf("\t\t\t.Date de naissance : %s\n",rech->date);
             printf("\t\t\t.Fili¦r            : %s\n",rech->filiere);
             printf("\t\t\t.Niveau            : %s\n",rech->niveau);

            }

      }
      fclose(db);
  }


//****************************FONCTION AFFICHAGE*****************************

void afficher(list *tete)
{
    list *paffiche ;
    paffiche=tete;
    if(tete!=NULL)
    {
    printf("\t---------------------\n");
    while (paffiche != NULL)
    {

          printf("\t* Num¦ro            : %d\n ",paffiche->num);
          printf("\t* Nom               : %s\n ",paffiche->nom);
          printf("\t* Pr,nom            : %s\n ",paffiche->prenom);
          printf("\t* Date de naissance : %s\n ",paffiche->date);
          printf("\t* Fili¦r            : %s\n ",paffiche->filiere);
          printf("\t* Niveau            : %s\n ",paffiche->niveau);
          printf("\t---------------------\n");
                  paffiche = paffiche->psuivant;
    }
    }
}

//****************************MAIN*******************************************

main()
{
clrscr();
FILE *db;
    char c[10];
    int choix ;
    list *tete, *f;
    tete = NULL;

db=fopen("etudiant.txt","a+");
f = (list*)malloc(sizeof (struct list))  ;
    printf("\t\tEnter le num¦ro : ");
    scanf("%d",&f->num);
    printf("\t\tEntrer le nom : ");
    scanf("%s",f->nom ) ;
    printf("\t\tEntrer le prenom : ");
    scanf("%s",f->prenom );
    printf("\t\tEntrer la date de naissance : ");
    scanf("%s",f->date ) ;
    printf("\t\tEntrer la fili¦re : ");
    scanf("%s",f->filiere ) ;
    printf("\t\tEntrer le niveau : ");
    scanf("%s",f->niveau );
fprintf(db,"%d\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\n",f->num,f->nom,f->prenom,f->date,f->filiere,f->niveau);
    tete=f ;
    f->psuivant = NULL ;
    do
    {   printf("\t\t\t\t******* Menu ******\n");
    printf("\t\t\t\t** 1-Ajout       **\n") ;
    printf("\t\t\t\t** 2-Suppression **\n") ;
        printf("\t\t\t\t** 3-Affichage   **\n") ;
    printf("\t\t\t\t** 4-Recherche   **\n") ;
    printf("\t\t\t\t** 5-Sortir      **\n") ;
    printf("\t\t\t\t*******************\n");
    printf("\n\t-Taper votre choix : ");
    scanf("%d",&choix) ;
    printf("\n");
        switch(choix)
        {
            case 1:ajout(tete) ;break ;
        case 2:printf("\t\t Entrer le nom que vous voulez supprimer : ");
                   scanf("%s",&c);
                   suppression(tete,c);
                   break ;
        case 3:afficher(tete) ;break ;
        case 4:recherche(tete) ;break ;
       
        }
    }
    while(choix!=5) ;
    getchar();


}

jeudi 26 février 2009 à 17:41:34 | Re : probleme en listes chainées.

coucou747

Administrateur CodeS-SourceS
salut

remplace :

     tete=tete->psuivant;
     tete=tete->psuivant->psuivant;

par
     tete->psuivant=tete->psuivant->psuivant;
vendredi 27 février 2009 à 11:41:40 | Re : probleme en listes chainées.

ryuzaki

merci en tout cas..mais le problème n'est pas résolu.


Cette discussion est classée dans : tete, rech, printf, scanf, list


Répondre à ce message

Sujets en rapport avec ce message

Langage C (saisie de données sur fichier) [ par doggy59115 ] Bonjour à tous ! Je bloque sur mon programme en langage C. Je suis novice !Je dois créer un programme où l'on rentre : nom, prénom, ville, adresse, co programme en C [ par graminach ] on a un pb pour la question 2b!le programme ne tourne pas en boucle et affiche meme en cas de valeur correcte erreurmerci d'avancehttp://www-ipst.u-st HELP!!!! gérer les espace dans mon prog lors des questions [ par Ethylotek ] bijoursvoici le début de mon prog :    printf("Veuillez saisir votre nom:\n");    scanf("%s",name);    printf("Veuillez saisir le nom de votre organis erreur [ par jekburn ] Bonjour, mon programme refuse de fonctionné, il commet une erreur mémoireMerci pour votre aide#include #include #include struct enreg{ char nom[30];& erreur d'application............please.help........... [ par jekburn ] #include #include #include struct enreg{ char nom[30]; char tel[10];}fiche; creation(){ clrscr(); FILE *fd; fd=fopen("fichier.dat"," Problème avec scanf() insovlable ?! [ par nollyflip ] Bonjour,J'ai un souci plutôt embêtant avec scanf()Je programme sous XP et devcppDès que j'appel scanf(), la console se ferme (ca plante quoi)J'ai fait Reprendre la main sur une erreur de SCANF [ par gollum ] voila : mon monceau de codec='n';printf("Entrer le coeff %d du terme %d \n",i,i);result = scanf("%f",&coef); while (result==0 && c=='n'){ printf("f va_list [ par garslouche ] Salut à tous,je voudrais faire un truc idiot mais c juste pour un test : je voudrais faire une fonction myprintf qui fasse comme printf (en utilisant écriture de fichier [ par cobra176 ] je recherche le moyen d'écrire sur un fichier texte les lignes que j'ai recherche.  system("cls");printf("saisir le mot rechercher en respectant les m probleme lors de la saisie de données pour mon répertoir [ par doggy59115 ] Bonjour a tous, j'ai un petit probleme avec mon programme en C. Lors de l'affichage des données saisies, le nom et le numero de telephone ne forment q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales