begin process at 2012 05 30 15:17:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Répertoire téléphonique en Liste Chainée


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

Répertoire téléphonique en Liste Chainée

jeudi 3 avril 2008 à 22:30:04 | Répertoire téléphonique en Liste Chainée

REQVIEM

Bonjour,

Je suis en école d'ingé et on a un projet a réaliser en C. On doit réaliser un Répertoire téléphonique en Liste Chainée de structure à partir d'un fichier texte dont les contactes ont été rajouté au préalable.

Dans un premier temps, mon code pour extraire les données du fichier texte et le transformer en Liste Chainée ne m'a pas trop posé de problème.

En revanche, par la suite je dois trier les contactes par Nom issu de la Liste Chainée, c'est a ce moment la que je suis bloqué, et que je demande votre aide. J'ai consulté pendant plusieur heure tout les sujets se ramenant au Liste Chainée et au tri, mais soit le sujet diffère trop du mien soit je n'y comprend rien, d'ou ce ma demande d'aide.

Je vois graphiquement comment je dois comparer, je sais aussi que je dois utilise la fonction strcmp pour comparer deux élements de la liste chainée.
Mais je ne sais comment arriver a prendre le premier élement de ma liste et le comparer avec les autres maillons ainsi entre le deuxième et le troisième, au-dela la boucle for s'occupera du reste.

Dans mon code lors de l'estraction des données du fichier texte, j'ai définit un pointeur de structure sur le premier élément de la chaine, or par la suite, ce pointeur va se trouver au dernier maillon, par consequent je n'ai aucun pointeur en Tete de liste a exploiter. De plus, lors de la vérification par un printf de maillon de la liste chainé, la dernière personne du fichier est imprimer 2 fois, j'ai placer un return 0 avant quelle écrive une deuxième fois pour éviter le problème, mais c'est pas très propre dans un programme.

Si vous pouvez m'expliquer comment réaliser le triage, la comparaison des maillons entre eux en m'indiquant la partie du code, cela m'aiderais beaucoup. En ce qui concerne la suite, le décalage du maillon et la suppresion, cela ne devrait pas trop me poser de problème. C'est uniquement la première parti du triage qui me pose problème et qui me bloque.


Je vous remerci du temps consacré a l'avance.


Voici mon fichier texte appellé contact dans le code:

Dupuis Alexis 060102034 alexis.dupuis@hotmail.com
Kervadec Robin 0139750637 nothing
Pinto Eric 0632323223 ericlepinto53@hotmail.fr
Picard Nicolas 06118895 nicospicard@live.com

Voici mon code :

#include

"stdafx.h"
#include"stdio.h"
#include"stdlib.h"
#include"string.h"

/**********************************************************************************************************/

typedef

struct contact                                           //Définition de la structure de donnée
{
char Nom[30];
char Prenom[30];
char Telephone[13];
char Email[50];

struct contact * pSuivant;
}contact;

/**********************************************************************************************************/

int Extraire();
void Trier ();

void
main()
{
Extraire();
system(
"pause");
}

/**********************************************************************************************************/

int Extraire()
{
FILE* fcontact=NULL;
int etatLecture;

struct

contact * pCourant;

//Initialisation de la liste chainée

struct

contact *Nouveau;
struct contact *Tete;

//Pointe vers la Tete de la liste

Tete = NULL;

// Ouverture fichier contact

fcontact=fopen("contact.txt","r");

//Vérificationsi l'ouverture du fichier a réussi

if (fcontact)                                                                /* ou (fcontact!=NULL) */
{

//Ajout d'un premier élément à la liste chainée
Nouveau = (contact*)malloc(sizeof(contact));
Nouveau->pSuivant = Tete;
Tete = Nouveau;

etatLecture=fscanf(fcontact,
"%s %s %s%s",&Nouveau->Prenom, &Nouveau->Nom, &Nouveau->Telephone, &Nouveau->Email);                               //lecture du premier contact
printf("%s %s %s %s\n\n", Nouveau->Prenom, Nouveau->Nom, Nouveau->Telephone, Nouveau->Email);

//tant que ce n'est pas la fin du fichier
while(etatLecture!=EOF)
{

//Ajout d'un élément en fin de liste
if (Tete != NULL)                         //parcours de la liste chaînée jusqu'au dernier noeud
{
pCourant = Tete;
while (pCourant->pSuivant != NULL) pCourant = pCourant->pSuivant;
   }

   pCourant->pSuivant = Nouveau; 
   Nouveau->pSuivant = NULL;
   etatLecture=fscanf(fcontact,

"%s%s%s%s",&Nouveau->Prenom,&Nouveau->Nom,&Nouveau->Telephone, &Nouveau->Email);

   //printf("etatLecture = %d",etatLecture); //Test de la valeur etatLecture

   if(etatLecture==-1)return 0; //afin d'éviter la répétition du dernier élément remarqué par le Test precedent

   printf(

"%s %s %s %s \n\n", Nouveau->Prenom, Nouveau->Nom, Nouveau->Telephone, Nouveau->Email);

   }
}

else
{
printf (
"Erreur d'ouverture \n");
}

fclose(fcontact);

return 0;
}

/**********************************************************************************************************/

void Trier ()
{
}

/**********************************************************************************************************/
mardi 8 avril 2008 à 21:12:05 | Re : Répertoire téléphonique en Liste Chainée

REQVIEM

J'ai commencé a réaliser ceci mais ça ne fonctionne pas, il m'indique que pCourant n'est pas initialiser.

void Trier ()
{
struct contact * pCourant;
struct contact * Tete;

Tete = pCourant;

Tete->pSuivant = NULL;

printf("%s %s %s %s \n\n", Tete->Prenom, Tete->Nom, Tete->Telephone, Tete->Email);


while (pCourant->pPrecedant != NULL)
{
    pCourant = pCourant->pPrecedant;
    printf("%s %s %s %s \n\n", pCourant->Prenom, pCourant->Nom, pCourant->Telephone, pCourant->Email);

}

}


Cette discussion est classée dans : fichier, liste, contact, chainée, etatlecture


Répondre à ce message

Sujets en rapport avec ce message

Lecture d'un fichier texte pour mettre dans une liste chainée [ par webgladiator ] Merci de prendre du temps à me lire.J'ai un projet d'info dont le but est d'effectuer le plus court itinéraire dans le metro parisien (opimisation).J' Fichier + liste chainée [ par Evisu ] Bonsoir,J'ai une question concernant l'écriture et la lecture de liste chainée dans un fichier.dataJ'ai une structure PERS qui contient des infos (nom [Urgent] Fonction à liste chainée [ par zalpa ] Bon voila, je suis un etudiant en 1ere année Informatique appliqu&#233 Liste fichier wxWindows [ par probordelais ] Bonjour,Je commence à utiliser wxWindows. Le truc que je veux faire c'est sélectionner un répertoire et ensuite lister automatiquement tous les fichie liste doublement chainée circulaire. [ par BassemH ] SalutEst-ce qeulqu'un peut m'aider à déclarer une liste doublement chainée circulaier? J'en ai besoin pour mon programme dont je dois manipuler des ex les liste chainée [ par korimatsu ] bonjour a tous je voulé juste savoir une chose si j'écris mon maillon de cette façon typedef struct maillon {int v; struct maillon *suiv; }maillo hotfolder, liste d'attente [ par shark1664 ] Bonjour, Je souhaiterai savoir si parmi vous quelqu'un sait où pourrais-je trouver un programme développé en C qui serait un genre de hotfolder. Je so Aide pour un jeu en c avec liste chainée [ par almou2009 ] Bonjour à Tous ; j'ai besoin d'un coup de main afin de commencer en C avec liste chainée , un jeu d'un poisson avec obstacles (rand) nourriture (ran tableau ou liste chainée [ par leFeu ] j'ai un programme a faire et je dois choisir les structures de données a utiliser.normalement un tableau dynamiqe me suffit car la taille de ma liste liste chainée ordonnée [ par doumaster ] Comment gérer une annuaire téléphonique ( nom, prénom, téléphone portable, téléphone bureau et domicile) à l'aide des listes chainées ordonnées. j'ai


Nos sponsors


Sondage...

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 : 0,936 sec (3)

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