A voir également:
- Tri shell pascal
- Turbo pascal download - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Tri excel - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Logiciel tri photo gratuit - Guide
11 réponses
soltann
Messages postés
1
Date d'inscription
dimanche 20 janvier 2008
Statut
Membre
Dernière intervention
21 janvier 2008
13
Modifié le 20 mai 2008 à 18:05
Modifié le 20 mai 2008 à 18:05
voilà le tri shell en Pascal
program tri_par_shell; uses wincrt; const nmax = 50; type tab = array[1..nmax] of integer; var ti : tab; i, j, n, x, k,aux :integer; function lecture : integer; var n: integer; begin repeat writeln('donner un entier positif entre 1 et ',nmax); read(n); until(n in [1..nmax]); lecture :=n; end; procedure remplir(var t : tab; a : integer); var i : integer; begin writeln('remplissage de tableau'); for i:=1 to a do read(t[i]); end; procedure permut(a,b: integer); var aux : integer; begin aux:=a; a:= b; b :=aux; end; procedure Tri_Shell(n : integer ; var t : tab); var p, k, i, j : integer; begin (* Recherche du Gap optimal qui est le résultat de *) (* la suite récurrente : Un = 3.Un-1 + 1 *) (* Tel que Un < n (Nombre d'éléments du tableau) *) p := 0; while (p < n) do p := 3 * p + 1; while (p <> 0) do begin (* On affine peu à peu le Gap *) (* Gap = 1 ==> Tri par Insertion ordinaire *) p := p div 3; for i := p to n do begin k := t[i]; (* Valeur à insérer *) (* Recherche de la position d'insertion *) j:= i; while (j > p - 1) and (t[j - p] > k) do begin t[j] := t[j - p]; j := j - p; end; (* Insertion de la valeur à son emplacement *) t[j] := k; end; end; end; procedure affiche (t: tab; a:integer); var i : integer; begin for i:=1 to n do writeln(t[i]); end; begin n :=lecture; remplir(Ti,n); tri_shell(n,ti); writeln(' affichage'); affiche(Ti,n); end.
Ahmed002007
Messages postés
2
Date d'inscription
lundi 3 décembre 2007
Statut
Membre
Dernière intervention
3 décembre 2007
6
Modifié le 20 mai 2008 à 18:05
Modifié le 20 mai 2008 à 18:05
program tri_selection_recursive; uses wincrt; const Nmax=100; type tab=array[1..Nmax]of integer; var n,c:integer; t:tab; (*******************************************************) procedure saisie(var n:integer;var t:tab); var i:byte; begin write('donner la taille du tableau:');read(n); for i:=1 to n do begin writeln('saisir la case N°:',i);readln(t[i]); end; end; (******************************************************) function posmin(n,c:integer;t:tab):integer; var i:byte; min:integer; begin min:=c; for i:=c+1 to n do begin if t[i]<t[min] then begin min:=i; end; end; posmin:=min; end; (*****************************************************) procedure permut(var x,y:integer); var tmp:integer; begin tmp:=x; x:=y; y:=tmp; end; (*****************************************************) procedure tri(n:integer;var t:tab); var i:byte; min:integer; begin for i:=1 to n-1 do min:=posmin(n,c,t); if t[i]<>t[min] then permut(t[i],t[min]); end; (****************************************************) procedure affiche(n:integer;t:tab); var i:byte; begin writeln('tapez une touche pour trier'); readln; for i:=1 to n do begin write(t[i]:3) end; end; (***************************************************) begin saisie(n,t); tri(n,t); affiche(n,t); end.
{j'ai un probleme est ce que vous pouvez me donner une solution }
program tri_selection_recursive; uses wincrt; const Nmax=100; type tab=array[1..Nmax]of integer; var n,c:integer; t:tab; (*******************************************************) procedure saisie(var n:integer;var t:tab); var i:byte; begin write('donner la taille du tableau:');read(n); for i:=1 to n do begin writeln('saisir la case N°:',i);readln(t[i]); end; end; (******************************************************) function posmin(n,c:integer;t:tab):integer; var i:byte; min:integer; begin min:=c; for i:=c+1 to n do begin if t[i]<t[min] then begin min:=i; end; end; posmin:=min; end; (*****************************************************) procedure permut(var x,y:integer); var tmp:integer; begin tmp:=x; x:=y; y:=tmp; end; (*****************************************************) procedure tri(n:integer;var t:tab); var i:byte; min:integer; begin for i:=1 to n-1 do begin min:=posmin(n,i,t); if (i<>min) then permut(t[i],t[min]); end; end; (****************************************************) procedure affiche(n:integer;t:tab); var i:byte; begin writeln('tapez une touche pour trier'); readln; for i:=1 to n do begin write(t[i]:5) end; end; (***************************************************) begin saisie(n,t); tri(n,t); affiche(n,t); end.
{ voilà votre code de tri par sélection}
salut
voilà le programme de tri par insertion sur un tableau d'entier
voilà le programme de tri par insertion sur un tableau d'entier
program tri_par_insertion; uses wincrt; const nmax = 50; type tab = array[1..nmax] of integer; var ti : tab; i, j, n, x, k,aux :integer; function lecture : integer; var n: integer; begin repeat writeln('donner un entier positif entre 1 et ',nmax); read(n); until(n in [1..nmax]); lecture :=n; end; procedure remplir(var t : tab; a : integer); var i : integer; begin writeln('remplissage de tableau'); for i:=1 to a do read(t[i]); end; procedure permut(a,b: integer); var aux : integer; begin aux:=a; a:= b; b :=aux; end; procedure Tri_insertion(n : integer ; var t : tab); var k, i, j : integer; begin for i := 1 to n do begin k := t[i]; (* Valeur à insérer *) (* Recherche de la position d'insertion *) j:= i; while (j > 0) and (t[j - 1] > k) do begin t[j] := t[j - 1]; j := j - 1; end; (* Insertion de la valeur à son emplacement *) t[j] := k; end; end; procedure affiche (t: tab; a:integer); var i : integer; begin for i:=1 to n do writeln(t[i]); end; begin n :=lecture; remplir(Ti,n); tri_insertion(n,ti); writeln(' affichage'); affiche(Ti,n); end.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
5 juil. 2005 à 01:27
5 juil. 2005 à 01:27
Il ya 25000 sortes de tri à ta disposition : tri a bulles, tri fusion, tri par insertion, quick sort... Certains sont plus faciles à implémenter, et leur complexité n'est pas la même.
En cherchant ces mots clés sur google je suis sûr que tu vas pouvoir faire ton choix et trouver des pseudos codes à convertir en pascal, car les algos de tri sont des grand classiques dans les cours d'algoithmique.
Bonne chance.
En cherchant ces mots clés sur google je suis sûr que tu vas pouvoir faire ton choix et trouver des pseudos codes à convertir en pascal, car les algos de tri sont des grand classiques dans les cours d'algoithmique.
Bonne chance.
ta9tou9a
Messages postés
5
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
22 avril 2008
2
Modifié le 20 mai 2008 à 18:05
Modifié le 20 mai 2008 à 18:05
salut, j'ai un probleme dans l'execusion de ce programme :
prb en prog
, s'il vous plait quel est le probleme ?
prb en prog
program moyenne; uses wincrt; const k=31; type tab1 = array [5..k] of real; procedure saisie(var n: real;var t: tab1); var i: integer; begin repeat write('donner la taille du tableau =' );readln(n); until (n in [5..31]); for i:=1 to n do begin write('donner t[ ', i,']:'); readln(t[i]); end; end; procedure tri(n:real; var t:tab1); procedure permut(var x,y: real); var a: real; begin x:=a; a:=y; y:=x; end; var t: tab; j: integer; echange: boolean; begin repeat echange:= false; for j:=1 to n do begin if t[j]>t[j+1] then permut(); echange:= true; end; n:=n-1; until (n=1) or (non(echange)); end; procedure taux(var m: integer; t:tab1; a: real ); var m: inetger; i: integer; begin m:=0; for i:=1 to n do if (t[i]>=10) then m:=m+1; a:=((m/n)*100); write('le taux de reussite est ',a,'%'); end; var n: real; t: tab1; begin saisie(n,t); tri(n,t); write('la moyenne la plus elevee est ',t[n]); taux(var m: integer; t:tab1; a: real) end.
, s'il vous plait quel est le probleme ?
un algoritme de trie par insertion
ahmed.scof
Messages postés
4
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
3 juillet 2008
Modifié le 20 mai 2008 à 18:05
Modifié le 20 mai 2008 à 18:05
voici le trie par insertion récursive:
-------------------------------------------------------------------------
-------------------------------------------------------------------------
program inser_rec; uses wincrt; type tab=array[1..40]of integer; var n,i,d,f:integer; t:tab; (*****************************************************) procedure saisie(var n:integer;var t:tab); var i:byte; begin writeln('donner la taille du tableau');readln(n); for i:=1 to n do begin write('saisir la case N°',i,'= ');readln(t[i]); end; end; (****************************************************) procedure decaler(var t:tab;d:integer); var int:integer; begin int:=t[d]; while (int<t[d-1]) and (d>1) do begin t[d]:=t[d-1]; d:=d-1; end; t[d]:=int; end; (***************************************************) procedure insertion(var t:tab;f,d:integer); begin if d<=f then begin if t[d]<t[d-1] then begin decaler(t,d); end; insertion(t,f,d+1); end; end; (**************************************************) begin writeln('-----tri insertion récurssive-----'); readln; saisie(n,t); d:=2;f:=n; insertion(t,f,d); writeln('---------voila-------------'); for i:=1 to n do write(t[i]:3); end.
svp je veux obtenir l'algorithme de tri shell en turbo pascal d'un tableux quel conque
****************************ET MERCI D'AVANCE *******************
****************************ET MERCI D'AVANCE *******************
ahmed.scof
Messages postés
4
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
3 juillet 2008
Modifié le 20 mai 2008 à 18:05
Modifié le 20 mai 2008 à 18:05
program tri_shell; uses wincrt; type tab=array[1..40]of integer; var t:tab; n,i:integer; (*********************************************************) procedure saisie(var t:tab;var n:integer); var i:integer; begin writeln('donner la taille du tableau');readln(n); for i:=1 to n do begin write('saisir la case N°',i,'= ');readln(t[i]); end; end; (*******************************************************) procedure shell(var t:tab;n:integer); var i,p,j,tmp:integer; begin p:=0; while p<=n do begin p:=3*p+1; end; while p<>0 do begin p:=p div 3; for i:=(p+1) to n do begin tmp:=t[i]; j:=i; while (t[j-p]>tmp) and (j>p) do begin t[j]:=t[j-p]; j:=j-p end; t[j]:=tmp; end; end; end; (****************************************************) begin saisie(t,n); shell(t,n); for i:=1 to n do write(t[i]:3); end.
Ma question est la suivante :
Classer automatiquement une liste de n entiers par ordre croissant puis décroissant.(en PASCAL)
Merci.
Classer automatiquement une liste de n entiers par ordre croissant puis décroissant.(en PASCAL)
Merci.
je voudrai un programme en pascal de tri rapide recursives utilisant les pointeurs
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
6 juil. 2008 à 00:12
6 juil. 2008 à 00:12
Le tri le plus rapide (à ma connaissance) est le tri par fusion, il est récursif (voir Tri Fusion).
Mais connaissant assez bien cette méthode de tri, je vois mal comment l'adapter à des pointeurs...
Mais connaissant assez bien cette méthode de tri, je vois mal comment l'adapter à des pointeurs...
13 mars 2011 à 17:20
18 déc. 2013 à 19:58