,fonction tri fusion en delphi svp !
kawani
Messages postés
10
Statut
Membre
-
kawani Messages postés 10 Statut Membre -
kawani Messages postés 10 Statut Membre -
Bonjour,
svp j'aurais besoin de la fonction qui réalise le tri fusion en version recursive et cela avec ( delphi 7 version entreprise) si possible c'est tres tres urgent de plus etant debutant je suis dans l'incapacité de le faire,,svp , pouvez vs m'aider merci d'avancee
svp j'aurais besoin de la fonction qui réalise le tri fusion en version recursive et cela avec ( delphi 7 version entreprise) si possible c'est tres tres urgent de plus etant debutant je suis dans l'incapacité de le faire,,svp , pouvez vs m'aider merci d'avancee
A voir également:
- ,fonction tri fusion en delphi svp !
- Delphi 7 - Télécharger - Langages
- Fonction si et - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Display fusion - Télécharger - Divers Utilitaires
13 réponses
bonjour ,, merci pour la procedure mais ce n'est pas ce que je recherche exactement ,ce que moi je veux c'est convertir cette procedure qui est en langage pascal vers delphi car je ne suis que debutante en delphi je ne le maitrise pas bien du tout et vs avez sans doute remarquez qu'il y"avait des choses qu'il faut ajouter a cette procedure pour pouvoir l'executer en delphi car j'ai deja introduit cettte derniere en pascal et impossible de l'executer en delphi ,,donc svp si possible de me la donner directement en delphi ,,,merci d'avance et j'éspére avoir été claire
Voici les déclarations à faire au début du code (ce ne sont que des exemples à adapter)
Const Nmin = 1; // par exemple
Nmax = 30; // par exemple
Type Element = string; // par exemple
TAB = array[Nmin..Nmax] of Element;Et voici la façon d'appeler la procédure de tri dans le programme principal : Tri_Fusion(t,Nmin,Nmax);
Const Nmin = 1;
Nmax = 30;
Type Element = string;
TAB = array[Nmin..Nmax] of Element;
procedure TriFusion (var a:tab; g, d: integer);
var i, j, k, m: integer;
begin
if g < d then
begin
m := (g + d) div 2;
TriFusion (a,g, m);
TriFusion (a,m + 1, d);
for i := m downto g do
b[i] := a[i];
for j := m+1 to d do
b[d+m+1-j] := a[j];
i := g;
j := d;
for k := g to d do
if b[i] < b[j] then
begin
a[k] := b[i];
i := i + 1
end
else
begin
a[k] := b[j];
j := j - 1
end;
end;
end; ( est ce que c'est de cette façon que je doit definir la procedure de plus je crois qu'en delphi il faut faire une certaine instruction celle de " strtoint " et aussi "edit.text " et " cells ." ou dois je les placer ? svp?
Nmax = 30;
Type Element = string;
TAB = array[Nmin..Nmax] of Element;
procedure TriFusion (var a:tab; g, d: integer);
var i, j, k, m: integer;
begin
if g < d then
begin
m := (g + d) div 2;
TriFusion (a,g, m);
TriFusion (a,m + 1, d);
for i := m downto g do
b[i] := a[i];
for j := m+1 to d do
b[d+m+1-j] := a[j];
i := g;
j := d;
for k := g to d do
if b[i] < b[j] then
begin
a[k] := b[i];
i := i + 1
end
else
begin
a[k] := b[j];
j := j - 1
end;
end;
end; ( est ce que c'est de cette façon que je doit definir la procedure de plus je crois qu'en delphi il faut faire une certaine instruction celle de " strtoint " et aussi "edit.text " et " cells ." ou dois je les placer ? svp?
Tous dépend de la finalité du programme... C'est pour faire quoi exactement ?
Normalement, il n'y a pas à modifier le code de la procédure Tri_Fusion pour la faire marcher (sauf si on ne veut pas faire de tri sur un array mais sur un fichier par exemple)
De plus ces instuctions " strtoint " et aussi "edit.text " et " cells ." je ne m'en sert que pour des opérations biens spécifiques qui n'ont a-priori rien à voir avec la fonction de tri par fusion...
Normalement, il n'y a pas à modifier le code de la procédure Tri_Fusion pour la faire marcher (sauf si on ne veut pas faire de tri sur un array mais sur un fichier par exemple)
De plus ces instuctions " strtoint " et aussi "edit.text " et " cells ." je ne m'en sert que pour des opérations biens spécifiques qui n'ont a-priori rien à voir avec la fonction de tri par fusion...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
justement ce sont ces opérations qui pausent probléme car je ne sais pas exactemnt comment ni méme quand les utilisés dans la procedure ,,juste une remarque ( c'est le tri d'un vecteur array et non pas un fichier ) je suis vraiment désolée de vous avoir deranger autant , !!!!!! (^-^) ,,,!!! merci encore de m'aider c'est tres gentil de votre part,
En fait ça dépend comment tu utilises Delphi, si tu l'utilises en mode console tu n'auras pas besoin de ce genre de fonctionnalités, ton code se limitera donc à ceci :
program TriFus;
{$APPTYPE CONSOLE}
Const Nmin = 1; // par exemple
Nmax = 30; // par exemple
Type Element = string; // par exemple
TAB = array[Nmin..Nmax] of Element;
Procedure Tri_Fusion (Var t : TAB; g, d : integer);
Var
m, i, j, k : integer;
s : TAB;
Begin
If d > g Then
Begin
m := (g + d) Div 2;
Tri_Fusion (t, g, m);
Tri_Fusion (t, m + 1, d);
For i := m DownTo g Do
s[i] := t[i];
For j := m + 1 To d Do
s[d + m + 1 - j] := t[j];
i := g; j := d;
For k := g To d Do
Begin
If s[i] < s[j] Then
Begin
t[k] := s[i];
i := i + 1;
End
Else
Begin
t[k] := s[j];
j := j - 1;
End;
End;
End;
End;
Procedure Remplir (Var t : TAB);
Var
i : integer;
Begin
For i := Nmin to Nmax Do
Begin
write('Element ',i,' : ');
readln(t[i]);
End
End;
Procedure Afficher (Var t : TAB);
Var
i : integer;
Begin
For i := Nmin to Nmax Do
Begin
write('Element ',i,' : ');
writeln(t[i]);
End
End;
Var
t : TAB;
Begin
Remplir (t);
Tri_Fusion (t, Nmin, Nmax);
Afficher (t);
End.
je vais essayer d'etre un peu plus claire cette fois si ,,je veux réaliser une application qui me permet de trier un vecteur par la methode de fusion et pour cela il me faut creer deux vecteur et 1 bouton pour cette application ,,,donc une fois crée je le séléctionnerai et je ferai un double clique sur ce bouton tout de suite apres une procedure s'afficheautomatiquement elle est directement relié a ce bouton , et donc moi je devrai la remplire en introduisant la procédure que vous m'avez presentez tout a l'heure , mais etant donné qu'elle n'est pas compléte en pascal il faut rajouter les opérations dont je vs ai parlé pour qu'elle séexcute normalent,voila :!!!!!!!!
j'ai oublié de signaler aussi que c'est la version entreprise delphi 7( 2002) ,,,,a ma connaissance elle est utilsée pour créer des applications,
Moi j'ai Delphi 6 mais ça devrait pas changer grand chose...
Alors pour faire ça bien, j'aimerais juste comprendre pourquoi utiliser deux vecteurs ? Est-ce que le deuxième vecteur est une copie trié du premier ?
Et ce que tu appelles vecteur, c'est un objet (un bouton sur ta fenêtre) ou juste un array que tu manipules dans différentes procédures ?
Mais normalement, si je devais essayer de le faire, sans connaître les réponses aux questions que je viens de poser, on devrait avoir quelquechose comme cecii :
Alors pour faire ça bien, j'aimerais juste comprendre pourquoi utiliser deux vecteurs ? Est-ce que le deuxième vecteur est une copie trié du premier ?
Et ce que tu appelles vecteur, c'est un objet (un bouton sur ta fenêtre) ou juste un array que tu manipules dans différentes procédures ?
Mais normalement, si je devais essayer de le faire, sans connaître les réponses aux questions que je viens de poser, on devrait avoir quelquechose comme cecii :
procedure TForm1.Button1Click(Sender: TObject);
begin
Tri_Fusion (t, Nmin, Nmax);
end;
ah voila je vois que vous commencez a bien comprendre ,,,donc le deuxieme tableau sert seulement a afficher le resultat cad le tableau etant trié ,,,,et pour la procédure c'est exactement ce je cherchais a vous faire comprendre ça s'affiche exactement de cette maniére cad :
procedure TForm1.Button1Click(Sender: TObject);
begin
Tri_Fusion (t, Nmin, Nmax);
end;
donc maitenant que dois je introduire de plus pour qu'elle soit fonctionnelle et que je puisse realiser l'application ??????
procedure TForm1.Button1Click(Sender: TObject);
begin
Tri_Fusion (t, Nmin, Nmax);
end;
donc maitenant que dois je introduire de plus pour qu'elle soit fonctionnelle et que je puisse realiser l'application ??????
Soit T1 ton vecteur de départ, et T2 ton vecteur d'arrivée ton code sera donc :
program TriFus;
{$APPTYPE CONSOLE}
Const Nmin = 1; // par exemple
Nmax = 30; // par exemple
Type Element = string; // par exemple
TAB = array[Nmin..Nmax] of Element;
Procedure Tri_Fusion (Var t : TAB; g, d : integer);
Var
m, i, j, k : integer;
s : TAB;
Begin
If d > g Then
Begin
m := (g + d) Div 2;
Tri_Fusion (t, g, m);
Tri_Fusion (t, m + 1, d);
For i := m DownTo g Do
s[i] := t[i];
For j := m + 1 To d Do
s[d + m + 1 - j] := t[j];
i := g; j := d;
For k := g To d Do
Begin
If s[i] < s[j] Then
Begin
t[k] := s[i];
i := i + 1;
End
Else
Begin
t[k] := s[j];
j := j - 1;
End;
End;
End;
End;
Var
T1,T2 : TAB;
procedure TForm1.Button1Click(Sender: TObject);
begin
T2:=T1; // Copie de T1 dans T2
Tri_Fusion (T2, Nmin, Nmax); // On tri T2, T1 n'est pas modifié
end;Mais pour que le programme soit réellement fonctionnel, il faut dans un premier temps créer une procédure qui créé le tableau T1 en lui attribuant des valeurs, et une autre d'affichage pour voir le tableau T2 quand il est trié...