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 :

besoin d'aide sur les liste chainees et fichiers


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut besoin d'aide sur les liste chainees et fichiers
    salut a tous, je m'appel as'n (lahssen) et en fait je suis en ecole d'ingenieur en aeronautique.
    on a un projet a faire en language C et j'ai quelques problemes:


    ->premierement mon xp m'a laché, je suis donc sous linux, et je ne sais pas avec quoi programmer et compiler facilement, vous auriez un equivalent de devcpp ou visualc++ (aussi intuitifs)??


    ->2e preobleme:
    on doit gerer un repertoire issu d'un fichier texte, qui est formaté et contient pour chaque ligne (donc chaque contact) le nom le prenom le numero de telephone et l'email sous forme de string donc.
    le probleme c'est qu'on doit trier ce repertoire dans l'ordre alphabetique dès que l'utilisateur veut afficher la liste des contacts.....

    je fais donc un typedef struct pr definir ma structure "contact", et je cree une fonction qui devrai trier mais je ne vois pas où est le probleme (j'utilise les listes chainees) , peut etre connaissez vous une subtilité que je nai pas remarquée??


    merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par biko95 Voir le message
    ->premierement mon xp m'a laché, je suis donc sous linux, et je ne sais pas avec quoi programmer et compiler facilement, vous auriez un equivalent de devcpp ou visualc++ (aussi intuitifs)??
    Code::Blocks
    ->2e preobleme:
    on doit gerer un repertoire issu d'un fichier texte, qui est formaté et contient pour chaque ligne (donc chaque contact) le nom le prenom le numero de telephone et l'email sous forme de string donc.
    le probleme c'est qu'on doit trier ce repertoire dans l'ordre alphabetique dès que l'utilisateur veut afficher la liste des contacts.....
    Tableau de structures, puis qsort(). Sinon, liste chainée et tri par insertion...

    Nota : ton fichier devrait avoir l'extension .c, sinon, tu risques de le compiler selon des règles qui ne sont pas celles du langage C.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    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 720
    Points : 31 042
    Points
    31 042
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par biko95 Voir le message
    ->premierement mon xp m'a laché, je suis donc sous linux, et je ne sais pas avec quoi programmer et compiler facilement, vous auriez un equivalent de devcpp ou visualc++ (aussi intuitifs)??
    C'est quand-même fort que quelqu'un vienne se plaindre de devoir programmer sous Linux alors que Linux ayant été écrit en C, contient déjà en natif toutes les librairies et outils de programmation pour ce langage (alors qu'il est nécessaire de les installer sous XP). T'as qu'à faire comme tout le monde => vi + gcc. Ca t'évitera de te retrouver en rade quand ton outil de développement tombe en panne...

    Citation Envoyé par biko95 Voir le message
    ->2e preobleme:
    on doit gerer un repertoire issu d'un fichier texte, qui est formaté et contient pour chaque ligne (donc chaque contact) le nom le prenom le numero de telephone et l'email sous forme de string donc.
    le probleme c'est qu'on doit trier ce repertoire dans l'ordre alphabetique dès que l'utilisateur veut afficher la liste des contacts.....

    je fais donc un typedef struct pr definir ma structure "contact", et je cree une fonction qui devrai trier mais je ne vois pas où est le probleme (j'utilise les listes chainees) , peut etre connaissez vous une subtilité que je nai pas remarquée??
    Tu as deux façons de voir les choses
    1) tu stockes tous tes contacts "en vrac" dans un tableau (tout nouveau contact vient s'ajouter en fin de tableau) et au moment de l'affichage, tu fais un tri => qsort() comme l'a dit Emmanuel
    2) A chaque nouveau contact qui vient s'ajouter, celui-ci est ajouté à sa bonne place. Là une liste chainée est intéressante puisqu'elle permet de ne pas avoir à décaler tout le tableau lors de l'insertion. Mais il te faut ensuite gérer toi-même le parcours de la liste lors de l'affichage
    A toi de voir quelle solution tu privilégies. Mais ce serait vraiment idiot de faire une liste chainée dans laquelle un nouvel élément s'ajouterait bêtement à la fin sans qu'il soit trié. Tu aurais tous les inconvénients de la liste chainée multipliés par tes propres problèmes de tri à l'affichage

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour vos reponses , deja.

    Alors pour le ".cpp" c parce que j'utilisais devc++ sous windows donc de base il renvoie un fichier.cpp ...
    Ensuite pour le tableau... je ne pense pas que je vais utiliser ça, parce que ça limite la taille, moi je souhaite vraiment le faire en liste chainee avec un tri de chaque ligne lu, à la volé, dès que je la li ... je vais voir si j'arrive a me debrouiller, mais qu'est ce que vous appelez tri a insertion??merci

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par biko95 Voir le message
    Alors pour le ".cpp" c parce que j'utilisais devc++ sous windows donc de base il renvoie un fichier.cpp ...
    C'est parce que tu l'utilises mal. Il faut créer un projet C et non C++.

    Ensuite pour le tableau... je ne pense pas que je vais utiliser ça, parce que ça limite la taille, moi je souhaite vraiment le faire en liste chainee avec un tri de chaque ligne lu, à la volé, dès que je la li ... je vais voir si j'arrive a me debrouiller, mais qu'est ce que vous appelez tri a insertion??merci
    Tu dois définir quel est le critère de tri.
    Ensuite, il suffit, à chaque ajout dans le liste chainée, de placer le nouvel élément (donc de l'insérer) au bon endroit. Tu parcours, la liste, quand l'emplacement est correct, tu insères entre les 2 éléments en jouant sur le chainage. Il y a quelques précautions à prendre au début et à la fin.

    C'est un algorithme intéressant et puissant si la liste n'est pas trop longue (quelques centaines d'éléments).

    http://emmanuel-delahaye.developpez....s_chainees.htm

    Au delà, le tableau trié est supérieur. On agrandit le tableau au fur et à mesure des besoins (doublage, nombre d'or...), on charge en vrac à la suite, puis on trie une fois quand c'est terminé.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    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 720
    Points : 31 042
    Points
    31 042
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Au delà, le tableau trié est supérieur. On agrandit le tableau au fur et à mesure des besoin (doublage, nombre d'or...), on charge en vrac à la suite, puis on trie une fois quand c'est terminé.
    Ouaip mais là il y a un petit danger => lors de la réallocation, il peut avoir un moment où le tableau se trouve 2 fois en mémoire (lors de la recopie). Donc il est nécessaire d'avoir à ce moment là l'espace pour stocker 2 tableaux.
    Les listes chainées offrent l'avantage de n'avoir, à tout instant de l'exécution, besoin que de l'espace pour une fois l'ensemble des éléments (et de temps en temps un élément en plus). Ca peut être utile de prendre ce fait en considération (et je n'ai pas pensé le dire dans mon premier post)...

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouaip mais là il y a un petit danger => lors de la réallocation, il existe un moment où le tableau se trouve 2 fois en mémoire (lors de la recopie). Donc il est nécessaire d'avoir à ce moment là l'espace pour stocker 2 tableaux.
    Oui, ça peut effectivement poser un problème sur les très gros tableaux...

Discussions similaires

  1. Besoin d'aide sur les listes
    Par Vincent Dieudonné dans le forum SharePoint
    Réponses: 5
    Dernier message: 24/05/2007, 12h34
  2. Besoin d'aide sur les fonction d'interbase
    Par BOUBOU81 dans le forum InterBase
    Réponses: 2
    Dernier message: 05/11/2004, 10h00
  3. besoin d'aide sur les ORB
    Par floorfille dans le forum CORBA
    Réponses: 4
    Dernier message: 24/08/2004, 15h43
  4. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 22/04/2004, 10h16
  5. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19

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