tri enregistrement pascal - Delphi/Pascal - Programmation
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+
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...
Marsh Posté le 07-09-2005 à 13:49:21
Je vois pas le rapport entre "with" et le tri
itela a écrit : |
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: |
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!!!
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
Marsh Posté le 09-09-2005 à 19:38:12
antp a écrit : Je vois pas le rapport entre "with" et le tri
|
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+
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!!!