,fonction tri fusion en delphi svp !
Fermé
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
-
6 janv. 2009 à 18:43
kawani Messages postés 10 Date d'inscription mardi 6 janvier 2009 Statut Membre Dernière intervention 8 janvier 2010 - 8 janv. 2009 à 12:06
kawani Messages postés 10 Date d'inscription mardi 6 janvier 2009 Statut Membre Dernière intervention 8 janvier 2010 - 8 janv. 2009 à 12:06
A voir également:
- ,fonction tri fusion en delphi svp !
- Fonction si et - Guide
- Telecharger delphi 7 - Télécharger - Langages
- Tri excel - Guide
- Display fusion - Télécharger - Divers Utilitaires
- Fonction moyenne excel - Guide
13 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 janv. 2009 à 22:49
6 janv. 2009 à 22:49
À quelques différences près, le Delphi c'est du langage Pascal...
Va donc voir ici
Va donc voir ici
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
7 janv. 2009 à 13:51
7 janv. 2009 à 13:51
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
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 janv. 2009 à 14:24
7 janv. 2009 à 14:24
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);
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
7 janv. 2009 à 16:22
7 janv. 2009 à 16:22
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?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 janv. 2009 à 16:31
7 janv. 2009 à 16:31
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
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
7 janv. 2009 à 18:08
7 janv. 2009 à 18:08
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,
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 janv. 2009 à 18:25
7 janv. 2009 à 18:25
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.
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
7 janv. 2009 à 19:30
7 janv. 2009 à 19:30
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 :!!!!!!!!
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
7 janv. 2009 à 19:39
7 janv. 2009 à 19:39
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,
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 janv. 2009 à 19:46
7 janv. 2009 à 19:46
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;
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
7 janv. 2009 à 20:52
7 janv. 2009 à 20:52
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 ??????
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 janv. 2009 à 21:27
7 janv. 2009 à 21:27
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é...
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
8 janv. 2009 à 11:32
8 janv. 2009 à 11:32
bonjourrr!!!!!!! merci inffiniment KX ,,,vous m'avez été d'une grande aide je vous en remércie ,,,il me reste maintenant qu'a essayer cette procédure et voir de ce qu'il en est ,,,,j'éspére qu'il n'y aura pas de probléme cette fois ci ,,merci encore,,,!!
kawani
Messages postés
10
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
8 janvier 2010
1
8 janv. 2009 à 12:06
8 janv. 2009 à 12:06
au fait pour inserer des valeur dans le tableau je n'ai pas besoin d"une procédure car je peux directement le faire par le biais d'une instruction qui est deja definie sur delphi,!voila,,,il ne me reste plus qu'a me mettre au boulot ,,,goooooo!