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

Pascal Discussion :

Tri d'un fichier d'enregistrements


Sujet :

Pascal

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 40
    Points
    40
    Par défaut Tri d'un fichier d'enregistrements
    Salut,
    J'essaye de coder une procedure qui trie un fichier d'enregistrements.
    Voilà la déclaration de l'enregistrement et des variables :
    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
     
    const nomFichier = 'etudiants.dat';
          nomFichierCopy = 'copieEtudiants.dat';
     
    type 
      etudiantRec = record
    		  numOrdre : byte;
    		  NCIN : string[8];
    		  nomPrenom : string[50];
    		  classe : string[50];
    		  telephone : string[20];
    		  email : string[30];
    		end;
      fichierEtudiantsFile = file of etudiantRec;
     
    var
       fichierEtudiants , copyFichierEtudiants : fichierEtudiantsFile;
       etudiants : etudiantRec;
    Voilà la procédure de tri par séléction :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    procedure triSelection(var fichier : fichierEtudiantsFile);
    var
        etud1 , etud2 , etud3  : etudiantRec;
        position,courant,posMax: Integer;
        fin: Integer;
    begin
        {Ouvre le fichier en lecture}
        reset(fichier);
     
        {pointe sur le dernier enregistrement}
        fin := filesize(fichier)-1;
     
        {parcour le fichier enregistrement par enregistrement}
        for position := fin downto 1 do
        begin
    	{cherche la position du max}
    	posMax := position;
    	for courant := 0 to position-1 do
    	begin
    	    seek(fichier,posMax);
    	    read(fichier,etud1);
    	    seek(fichier,courant);
    	    read(fichier,etud2);
    	    if (etud2.nomPrenom > etud1.nomPrenom) then posMax := courant;
    	end;
    	{fin cherche la position du max}
     
    	{permuter l'enregistrement d'indice posMax avec l'enregistrement d'indice position}
    	seek(fichier,position);
    	read(fichier,etud3);
    	write(fichier,etud1);
    	seek(fichier,posMax);
    	write(fichier,etud3);
          end;
    end;
    Elle ne donne pas le résultat voulu.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 40
    Points
    40
    Par défaut
    pour un fichier qui contient :
    NCIN : y
    Nom et prénom : y
    Classe : y
    Téléphone : y
    Email : y

    NCIN : z
    Nom et prénom : z
    Classe : z
    Téléphone : z
    Email : z

    NCIN : e
    Nom et prénom : e
    Classe : e
    Téléphone : e
    Email : e

    NCIN : b
    Nom et prénom : b
    Classe : b
    Téléphone : b
    Email : b

    NCIN : c
    Nom et prénom : c
    Classe : c
    Téléphone : c
    Email : c

    NCIN : a
    Nom et prénom : a
    Classe : a
    Téléphone : a
    Email : a

    NCIN : x
    Nom et prénom : x
    Classe : x
    Téléphone : x
    Email : x
    elle donne :
    NCIN : a
    Nom et prénom : a
    Classe : a
    Téléphone : a
    Email : a

    NCIN : b
    Nom et prénom : b
    Classe : b
    Téléphone : b
    Email : b

    NCIN : b
    Nom et prénom : b
    Classe : b
    Téléphone : b
    Email : b

    NCIN : b
    Nom et prénom : b
    Classe : b
    Téléphone : b
    Email : b

    NCIN : c
    Nom et prénom : c
    Classe : c
    Téléphone : c
    Email : c

    NCIN : x
    Nom et prénom : x
    Classe : x
    Téléphone : x
    Email : x

    NCIN : y
    Nom et prénom : y
    Classe : y
    Téléphone : y
    Email : y

    NCIN : z
    Nom et prénom : z
    Classe : z
    Téléphone : z
    Email : z

  3. #3
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Bonjour,
    Quand tu travails sur des tries, il est important d'afficher les itérations, ça permet de savoir si ton algo est dans le droit chemin ou non, et suivre sur une feuille ou en est ton programme itération par itération. Si tu suis ces étapes, tu vas pouvoir indentifier puis corrigier le problème en moins de temps qu'il n'en faut pour poster un message sur le forum

Discussions similaires

  1. Créer un fichier d'enregistrements
    Par Oregor dans le forum Langage
    Réponses: 19
    Dernier message: 02/06/2012, 20h02
  2. tri selon le nombre d'enregistrement
    Par bugbug dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/12/2005, 13h57
  3. tri d'un fichier texte
    Par ben127 dans le forum C
    Réponses: 7
    Dernier message: 23/12/2005, 20h03
  4. [LG] Le tri par insertion d'un enregistrement
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 01/09/2005, 20h38
  5. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09

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