Petit problème de tri
Publié : sam. 10/mars/2007 13:23
Bonjour à tous.
Voilà, j'ai un petit problème de tri, et je ne sait pas comment le résoudre.
Bon un petit exemple valant mieux qu'un long discours, voici le programme que j'utilise:
Bon maintenant, une petite explication. Il s'agit de trier un tableau de lettres rempli avec un mot clef qui peut être plus ou moins long. Dans cet exemple il s'agit de "UNPEIGNEUNPEIGNE". Pour faire simple, et pour éviter de trier en plus un tableau d'index, j'associe directement l'index à la lettre et ensuite je tri.
Le problème se situe au niveau des lettres identiques. Par exemple l'index après le tri est celui-ci:
12/16/4/8/14/6/13/5/10/15/2/7/11/3/1/9 alors qu'il devrait-être:
4/8/12/16/6/14/5/13/2/7/10/15/3/11/1/9
Les lettres devant-être relevées de la gauche vers la droite en respectant l'ordre alphabétique. Bien sur il faudrai alors effectuer un deuxième tri sur les lettres de même valeur... Mais cela risque de compliquer pas mal la chose...
Avez-vous une autre solution ?
Autre question. Est-il possible en Pure de commencer un tableau à l'indice 1 au lieu de zéro ? Si mes souvenirs sont exacts en Basic GFA on utilisait Option Base 0 ou Option Base 1. Impossible de trouver en Pure... Mais j'ai peut-être manqué une option. Si oui, il serai souhaitable de la rajouter dans la doc avec l'option DIM.
Merci d'avance pour vos réponses.
Voilà, j'ai un petit problème de tri, et je ne sait pas comment le résoudre.

Bon un petit exemple valant mieux qu'un long discours, voici le programme que j'utilise:
Code : Tout sélectionner
Clef$="UNPEIGNEUNPEIGNE"
long=Len(Clef$)
Global Dim tableclef$(Len(Clef$))
Global Dim TableCrypto$(9,long+1)
Crypto$="SOTPECHEURALEMBOUCHUREDURHONESONPOISSONSURLEGRILDEUXFOISRETOURNA"
For n=1 To long
tableclef$(n)=Mid(Clef$,n,1)+Str(n)
Debug tableclef$(n)
Next n
Debug "------------------------------"
SortArray(tableclef$(),0)
For n=1 To long
Debug tableclef$(n)
Next n
Le problème se situe au niveau des lettres identiques. Par exemple l'index après le tri est celui-ci:
12/16/4/8/14/6/13/5/10/15/2/7/11/3/1/9 alors qu'il devrait-être:
4/8/12/16/6/14/5/13/2/7/10/15/3/11/1/9
Les lettres devant-être relevées de la gauche vers la droite en respectant l'ordre alphabétique. Bien sur il faudrai alors effectuer un deuxième tri sur les lettres de même valeur... Mais cela risque de compliquer pas mal la chose...

Avez-vous une autre solution ?
Autre question. Est-il possible en Pure de commencer un tableau à l'indice 1 au lieu de zéro ? Si mes souvenirs sont exacts en Basic GFA on utilisait Option Base 0 ou Option Base 1. Impossible de trouver en Pure... Mais j'ai peut-être manqué une option. Si oui, il serai souhaitable de la rajouter dans la doc avec l'option DIM.
Merci d'avance pour vos réponses.
