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 :

Organisation indexé direct en C


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Organisation indexé direct en C
    Bonjour,

    Je dois faire un programme avec un "full indexed".
    Dans cette index, je dois mettre un numéro, un nom et un prénom.

    Le problème est que je ne comprend absolument pas comment cela fonctionne.

    Si je dois mettre 3 variables dedans, je dois utilisé une structure ?
    Une structure dans un tableau ? (une structure par personne, dont le tableau comprendra les structure trié)

    Mais quel est alors l'intérêt de faire un index aussi complet ? J'ai l'impression que ça ressemble presque à un fichier cette index !

    Si quelqu'un pouvait un peu m'expliquer le principe, comment ça fonctionne, pourquoi tant de champs ?
    Parce que je suis vraiment bloqué la

    Merci

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Centre23 Voir le message
    Bonjour,

    Je dois faire un programme avec un "full indexed".
    Qu'entends-tu par là? Créer une table associative? Je ne comprends pas très bien le but?

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Bonjour et bienvenue.

    Je ne comprends pas ce que tu veux faire en particulier. Un « index » dans le langage courant, c'est effectivement une liste d'articles triées selon un critère particulier. Lequel index, quand il se trouve à la fin d'un ouvrage, sert effectivement à retrouver leur position au sein de cet ouvrage.

    Ton approche à base de structure, puis de tableau contenant n structures est la bonne. C'est comme cela qu'il faut procéder. Et, oui, c'est effectivement à ça que servent initialement les fichiers en informatique (à la base, un fichier, c'est une boîte à fiches).

    En base de données (sur les SGBD) plus précisément, les index servent à justement à faciliter la recherche d'un enregistrement selon un critère donné : ça veut dire que ta table elle-même est construite selon le même modèle — n enregistrements contenant chacun un nom, un prénom et un numéro — et que ces enregistrements sont soit triès selon un seul critère, par exemple le numéro ou un agglomérat de plusieurs colonnes (ex: nom+prenom comme s'il s'agissait d'une seule chaîne), soit pas triés du tout, chaque enregistrement inséré occupant la première place libre.

    Dans ce cas, ajouter un « index » à une colonne est une opération menée par le SGBD et transparente pour l'utilisateur. Elle consiste à rajouter une ou plusieurs colonnes « invisibles » servant à implémenter une liste chaînée ou autre structure appropriée, ce qui permet ensuite de retrouver plus facilement les enregistrements suivant un ordre donné, même s'ils ne sont pas triés de cette façon sur le disque.

    Dis-nous en un peu plus sur ton projet.

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses.

    Pour être plus précis, j'ai un fichier avec plusieurs structures qui contiennent chacune des informations sur des personnes.

    Je dois faire un index pour afficher ces structure dans un ordre alphabétique.
    Dans cette index je dois mettre leur numéro, leur prénom et leur nom.

    C'est cette façon de voir qui me perturbe.
    Je ne comprends pas pourquoi il faut tant de champs dans un index ...

    En résumer, je ne comprend pas très bien ce qu'on veut me faire faire.

    C'est pour cela que si vous voyez comment je dois procéder, n'hésitez pas à me faire part de la méthode

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Centre23 Voir le message
    Pour être plus précis, j'ai un fichier avec plusieurs structures qui contiennent chacune des informations sur des personnes.
    Quel fichier ? C'est important pour que l'on sache de quelle manière sont actuellement organisées tes données.

    Je dois faire un index pour afficher ces structure dans un ordre alphabétique. Dans cette index je dois mettre leur numéro, leur prénom et leur nom.
    Pour clarifier les choses, qu'appelles-tu « index » ? On a vu que ce terme pouvait avoir des significations sensiblement différentes selon le contexte.

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je dois encoder dans un fichier (que je créerai à la toute première ouverture du programme) des membres, ces membres seront des structures qui contiendront des informations (numéro, nom, prénom, ville, etc ...).

    Et mon me demande de faire un index qui se créera à chaque ouverture du programme et qui devra contenir au minimum le numéro de membre, le nom et le prénom.

    C'est tout ce que j'ai comme information.
    Ensuite on me demande de par exemple, ajouter un membre (dans le fichier) et de mettre l'index à jour.
    Ou d'afficher les membres par ordres alphabétique.

    C'est tout ce que je peux dire

  7. #7
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    L'index est une représentation affichable du contenu du fichier. Comme tu l'as écrit il faut utiliser les structures. Ca semble évident.

    En partant de ce constat tu as deux possibilités pour créer ton fichier :
    1. écrire un fichier texte avec par ligne toutes les informations représentant un membre,
    2. écrire un fichier binaire qui va contenir la liste des différents membres sous la forme de la structure.

    Si tu pars sur l'option 2 ton fichier n'est pas lisible tel quel. Il te faut donc un moyen pour le rendre accessible. C'est le but de l'index.

    Pour créer ton index il te faut charger dans une liste chaînée par exemple tout le contenu de ton fichier. Ensuite l'affichage des informations reste à ta convenance (console, GUI). Pour ma part je partirai sur l'utilisation d'une table de hashage. Accès rapide à l'information pour l'utilisateur final. Mais ceci n'est que mon avis.

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci gerald3d.
    Mais quand tu dis que je dois charger tout le contenu du fichier dans une liste chainé, donc dans l'index, c'est une opération courante en programmation ?
    Plutôt que d'afficher tout ce qu'il y a dans le fichier, on transfert tout le fichier en mémoire et ensuite on l'affiche ...

    Mais dans ce cas, on devrait charger TOUT le contenu du fichier dans une liste chainé, or dans mon énoncé, on me dit qu'au minimum on peut ne que mettre le numéro du membre, son nom et son prénom.

    Cela voudrait-il dire que je dois donc charger le numéro, nom et prénom de chaque membre du fichier dans une liste chainée, afficher cette liste, et ensuite demander à l'utilisateur de qu'elle membre il veut voir la fiche complète en fonction uniquement de se que j'affiche (donc numéro, nom et prénom) ?

    Si c'est bien ça, je dois afficher tout les numéro, nom, prénom d'un coup, ou les afficher un par un, et pour chaque affichage, demander si l'utilisateur veut voir la fiche complète ?
    Et donc si c'est bien ça je bloque un peut sur le moyen d'aller à la fiche complète dans le fichier.

    Imaginons qu'on voit sur l'écran le numéro nom et prénom d'un membre, comment demander à l'utilisateur pour voir sa fiche complète ? Il faudra dans cette index un nombre qu'on affiche pas mais qui indique l’emplacement de cette fiche dans le fichier ?

    Je sais que ça fait beaucoup de question mais si j'ai la réponse, je pourrai enfin commencer à travailler dés demain

  9. #9
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    En admettant que tu partes sur le principe d'un fichier binaire, lorsque tu charges le numéro, nom et prénom de chaque enregistrement, tu as déjà un index de position .

    prenons un exemple. Ton fichier disposes de 3 enregistrements. Tu charges les informations de ces 3 enregistrements, juste le nécessaire : nom et prénom par exemple.

    tu affiches ces noms et prénoms à l'écran. De là l'utilisateur choisi le nom et prénom de son choix, qui pour l'exemple correspond à l'enregistrement 2.
    En ouvrant à nouveau ton fichier et en te déplacant à l'enregistrement n°2 directement (avec la fonction fseek()) tu peux prendre toutes les information de la fiche.

    Pa sûr que je sois très clair ...

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Centre23 Voir le message
    Je dois encoder dans un fichier (que je créerai à la toute première ouverture du programme) des membres, ces membres seront des structures qui contiendront des informations (numéro, nom, prénom, ville, etc ...). Et mon me demande de faire un index qui se créera à chaque ouverture du programme et qui devra contenir au minimum le numéro de membre, le nom et le prénom. C'est tout ce que j'ai comme information. Ensuite on me demande de par exemple, ajouter un membre (dans le fichier) et de mettre l'index à jour. Ou d'afficher les membres par ordres alphabétique.
    Ok, donc il s'agit bien d'un index dans le sens SGBD du terme.

    Ce qu'on te demande de faire, donc, c'est ni plus ni moins que ré-écrire le système de gestion de table d'un système de gestion de base de donnée. En rajoutant quelques fioritures, tu pourrais réécrire sqlite ou DBase III en entier. :-) Bon, j'exagère, mais pas tant que ça.

    L'avantage, c'est qu'on te demande de recréer les index à chaque ouverture du programme, ce qui signifie que tu n'auras pas à les stocker directement dans le fichier. Ça te fera gagner quelques heures.

    Je te conseille d'utiliser dans un premier temps des champs (et donc des enregistrements) de taille fixe. C'est ce que faisaient pratiquement tous les gestionnaires de fichiers et de base de données jusqu'à une certaine époque.

    Citation Envoyé par gerald3d Voir le message
    En partant de ce constat tu as deux possibilités pour créer ton fichier :
    1. écrire un fichier texte avec par ligne toutes les informations représentant un membre,
    2. écrire un fichier binaire qui va contenir la liste des différents membres sous la forme de la structure.

    Si tu pars sur l'option 2 ton fichier n'est pas lisible tel quel. Il te faut donc un moyen pour le rendre accessible. C'est le but de l'index.
    Euh, non. Ce n'est pas ça, le but de l'index.

    L'index sert à maintenir, en parallèle de la liste principale, un tri selon un critère donné pour pouvoir facilement rechercher des infos selon ce critère, même si la liste n'est pas triée dans cet ordre. Et ça, ça s'applique quelque soit le format de stockage que tu utilises.

  11. #11
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Euh, non. Ce n'est pas ça, le but de l'index.

    L'index sert à maintenir, en parallèle de la liste principale, un tri selon un critère donné pour pouvoir facilement rechercher des infos selon ce critère, même si la liste n'est pas triée dans cet ordre. Et ça, ça s'applique quelque soit le format de stockage que tu utilises.
    Au temps pour moi

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Au temps pour moi
    (Pas de problème )

  13. #13
    Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Un grand merci j'ai enfin compris cette index
    Et oui effectivement c'est un index dans le sens SGBD et toutes les structures dans le fichier on la même taille

    Juste pour être sur, quand j'extrait, des structures du fichier, le nom et le prénom pour faire l'index par exemple, j'extrait aussi la position ftell que je n'afficherai pas, mais que je garderai pour aller chercher la structure complète, que l'utilisateur aura choisit, dans le fichier ?

  14. #14
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par Centre23 Voir le message
    Juste pour être sur, quand j'extrait, des structures du fichier, le nom et le prénom pour faire l'index par exemple, j'extrait aussi la position ftell que je n'afficherai pas, mais que je garderai pour aller chercher la structure complète, que l'utilisateur aura choisit, dans le fichier ?
    Le mieux n'est pas d'enregistrer ftell() tel quel mais plutôt le « rang » de la fiche dans ton fichier, que tu multipliera par la taille d'une structure pour en déduire la position exacte.

    C'est d'ailleurs pour faire ce genre de manip' que les fonctions fwrite() et fread() ont été écrites telles qu'elles apparaissent encore aujourd'hui : tu spécifies la taille des éléments à lire ou à écrire, et leur nombre.

  15. #15
    Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Soit pourquoi pas faire comme tu dis après tout, par contre, je ne vois pas comment spécifier le rang, je l'inscrit dans la structure de chaque fiche dans le fichier ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/09/2010, 17h00
  2. Accéder directement à l'index.htm par défaut
    Par nteppe dans le forum Apache
    Réponses: 4
    Dernier message: 23/08/2008, 18h54
  3. performances et index : comment les organiser
    Par frp31 dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/01/2008, 16h07
  4. Directory index forbidden by Options directive
    Par scoubidoo.bidoo dans le forum Apache
    Réponses: 1
    Dernier message: 29/09/2007, 15h59
  5. index.php non interprété directement
    Par Celeborn dans le forum Apache
    Réponses: 3
    Dernier message: 04/07/2006, 14h21

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