tri enregistrement pascal

tri enregistrement pascal - Delphi/Pascal - Programmation

Marsh Posté le 06-09-2005 à 00:47:37    

Bonjour,
 
Je comprends le principe du tri avec Pascal mais je ne sais pas trop comment m'y prendre pour trier les données d'un enregistrement.  Est-ce que quelqu'un aurait un exemple simple à me montrer.
 
Je sais qu'il faut comparer chaque éléments du champs et déplacer l'enregistrement au complet en utilisant des tampons mais je n'arrive pas à visualiser comment mettre mon enregistrement dans un tampon et comment utiliser les tampons en général pour un tri.  Merci de votre aide!!!

Reply

Marsh Posté le 06-09-2005 à 00:47:37   

Reply

Marsh Posté le 06-09-2005 à 19:17:40    

bonjour,
 
difficile de répondre précisément à cette question tant les cas possibles sont multiples !
 
une variable tampon est tout simplement une variable du même type que les données à trier et qui sert à garder transitoirement l'état d'une variable !
 
Si ma mémoire est bonne, avec une variable de type record (enregistrement), il faut affecter les champs du record un à un.
 
Par exemple, avec une variable  record qui contiendrait les champs : nom ; prenom  et age, il faut faire :
tampon.nom:=variable.nom;
tampon.prenom:=variable.prenom;
tampon.age:=variable.age
 
on ne peut pas utiliser directement l'affectation suivant tampon:=variable
 
a+

Reply

Marsh Posté le 06-09-2005 à 19:55:26    

Merci,
J'avais utilisé WITH mais il parrait que ça ne fonctionne pas avec le tri alors je retravaille mon code et je vais voir...  

Reply

Marsh Posté le 07-09-2005 à 13:49:21    

Je vois pas le rapport entre "with" et le tri :??:
 

itela a écrit :


 
on ne peut pas utiliser directement l'affectation suivant tampon:=variable


 
Il me semble que si.
Dans la doc ils en parlent aussi :

Citation :

You can now copy the values of Record1's fields to Record2:
 
Record2 := Record1;


Message édité par antp le 07-09-2005 à 13:49:42

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-09-2005 à 15:44:42    

Je n'ai pas eu le temps de revoir tout ça mais ce soir je vais vérifier.
En fait on peut mettre une variable dans un tampon de même type et pour mettre tout un enregistrement dans un tampon il faut avoir une variable du même type que l'enregistrement (record).  Mais bon j'ai pas encore essayé.  
 
Pour ce qui est du WITH je n'ai pas d'explication, c'est peut-être la façon que ma procédure est structurée avec un autre calcul avant???  Je vais tester tout ça ce soir!!!

Reply

Marsh Posté le 08-09-2005 à 03:46:03    

Je n'y arrive pas, voici mon code si quelqu'un a une idée de ce que ça peut être, c'est le tri par insertion, Merci,
 
  Patineur = Record
            Nom: String [20];
            Prenom: String [20];
            Notes: Array [1..max_juges] Of integer;
            Moyenne:Array[1..max_Patineurs]of real;
            moy:real;
          End;
 
//tri
 
             For i:=2 to max_patineurs do  
             begin
               tampon:= les_patineurs[i].moy;
               j:=j-1;
               
              while ((j>0) and (Les_Patineurs[j].moy>=tampon)) do  
                begin
                  les_patineurs[i+1]:=les_patineurs[i];
                  j:=j-1;
                end; //for while
             end; // for i
 
             les_patineurs[indice].moy:=temp2;
   
             for j:=1 to max_patineurs do
             begin
             writeln('les patineurs',temp2:6:2);
              end; //for j


Message édité par green68 le 08-09-2005 à 03:47:50
Reply

Marsh Posté le 09-09-2005 à 19:38:12    

antp a écrit :

Je vois pas le rapport entre "with" et le tri :??:
 
 
 
Il me semble que si.
Dans la doc ils en parlent aussi :

Citation :

You can now copy the values of Record1's fields to Record2:
 
Record2 := Record1;



Merci pour la précision : j'en prends note. En fait, ça fait quelques années que je n'ai plus vraiment touché au Delphi et encore plus longtemps pour le Pascal... mais le sujet m'intéresse encore  :)  
 
Green68, l'instruction with permet d'éviter la répétition du nom du record :
with patineur do
nom:=...
prenom:=...
etc
 
Je ne comprends donc pas le problème qu'il pourrait y avoir entre le with et ton tri.
 
Pour ce qui est du bout de code que tu publies, c'est difficile de l'analyser tel quel :
- quelle est la valeur initiale de j ?
- Comment sont affectées les variables "indice" et temp2 ?
 
a+


Message édité par itela le 09-09-2005 à 19:42:24
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed