gabsia
Messages postés9Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention27 avril 2008
-
27 avril 2008 à 21:57
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
28 avril 2008 à 09:44
salut,
le traitement c'est trier un tableau de chaines de caractères en ordre croissant :
le critere de tri c'est la longueur de la chaine, si 2 chaines ont la meme longueur , on trie selon l'ordre alphabetique.
voici le code que j'ai fait en pascal:
Program Tri_methode_Par_selection ;
uses wincrt;
Type Tab = ARRAY [1..30] Of string ;
Const NMAX=20;
Var T : Tab ; N:integer;
PROCEDURE Saisir ( Var N : Integer ; Var T : Tab ) ;
Var i : Integer ;
Begin
Repeat
writeln ('donner N');
readln(N);
until (N in [2..NMAX]);
For i:= 1 To N Do
repeat
writeln(' donner T[',i,']');
Readln ( T[i] ) ;
until (T[i]<>'');
End ;
PROCEDURE Tri_selection (Var T : Tab ;N : Integer);
Var i, ppm : Integer ;
PROCEDURE Permute ( Var A, B : string ) ;
Var Aux : string;
Begin
Aux := B ;
B := A ;
A := Aux ;
End ;
FUNCTION ppminimum( T : Tab; M , F : Integer ) : Integer;
Var posmin, j : Integer;
Begin
posmin := M;
For j := M+1 To F Do
begin
If (length(T [posmin])) > length (T [j] ) Then
posmin:= j;
If (length(T [posmin]))= length (T [j] ) then
IF (T[posmin]>T[j]) then
posmin:=i;
end;
write('fin ppmax');
ppminimum := posmin;
End ;
Begin
For i := 1 To N-1 Do
Begin
ppm := ppminimum ( T,i,N );
If T[ppm] <> T[i] Then
Permute ( T[ppm], T[i] );
End;
End;
PROCEDURE Affiche (T : Tab ; N : Integer ) ;
Var i : Integer ;
Begin
For i := 1 To N Do
Writeln ( 'l''élément n° ',i, '= ' ,T[i] ) ;
End ;
Begin
Saisir ( N , T );
Tri_selection ( T , N );
Affiche ( T , N );
End.
mais le problème j'ai erreur lors de l'execution apres le remplissage du tableau, malgres que ma démarche est raisonable.
Est ce que vous pouvez m'aider , m'indiquer ou le problème dans mon code ou me donner autre démarche.
Merci d'avance.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 28 avril 2008 à 09:37
Bonjour [auteur/GABSIA/780491.aspx gabsia,]
"le traitement c'est trier un tableau de chaines de caractères en ordre croissant :
le critere de tri c'est la longueur de la chaine, si 2 chaines ont la meme longueur , on trie selon l'ordre alphabetique."
Ce souci s'appelle : tri alphabétique, c'est-à-dire le tri normal que tu peux retrouver par exemple sur EXCEL..
Il n'y a donc pas besoin d'écrire tout ce code..
il suffit pour toi d'utiliser une méthode déjà prévue par Delphi (Sort par exemple) et le résultat est immédiat.
Je n'ai pas testé ton code mais vu la longueur...
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 28 avril 2008 à 09:44
Tu peux donc trier ta liste et ensuite renseigner ton tableau ou le trier directement en utilisant d'autres techniques (voir exemple déposé par [auteur/FLORENTH/316333.aspx florenth])