Tableau trié en pascal

Fermé
alphx - 23 janv. 2002 à 17:45
 aLphX - 24 janv. 2002 à 11:25
J'ai crée un tableau dynamique d'enregistrement en pascal...Maintenant j'aimerais pouvoir mélanger ce tableau...
J'ai utilisé un 2e tableau dynamique et la fonction random...

for i := 0 to 26 do
t[i] : =t[random(26)];

comme çà, il prend une valeur au hasard dans mon premier tableau et la met dans mon nouveau tableau. Ca mélangera dopnc bien le tableau. Le seul problème est que random peut prendre plusieurs fois la même valeur. ce qui multipliera le nombre d'occurence d'une case. Ce que je ne veux pas !!!

Comment faire ?? (pour mélanger un tableau dynamique, sans prndre deux fois la même valeur)

Merci d'avance

aLphX
A voir également:

2 réponses

Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208
23 janv. 2002 à 23:01
La solution que j'utilise (en JavaScript, mais applicable dans tous les langages) :
- utiliser un tableau auxiliaire (itmp), initialisé de 0 à n
- faire la boucle suivante
for ( k=0, cnt=n ; kk<n ; kk++ ) {
ic = Math.floor(Math.random()*cnt) ; // valeur de 0 à cnt-1
nrec = itmp[ic] ; // ---> le numéro à utiliser
// insérer ici la séquence (transfert des enregistrements)
counter-- ;
itmp[ic] = itmp[counter] ; // ranger le dernier
itmp[counter] = nrec ; // pour ne pas perdre la valeur
}
- on pourrait faire la boucle n-1 fois (il ne resterait plus qu'un pointeur), ce qui obligerait à programmer la séquence de transfert du dernier élément.
0
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208
23 janv. 2002 à 23:04
... autant (au temps) pour moi !!
for ( k=0, cnt=n ; kk<n ; kk++ ) {
ic = Math.floor(Math.random()*cnt) ; // valeur de 0 à cnt-1
nrec = itmp[ic] ; // ---> le numéro à utiliser
// insérer ici la séquence (transfert des enregistrements)
cnt-- ;
itmp[ic] = itmp[cnt] ; // ranger le dernier
itmp[cnt] = nrec ; // pour ne pas perdre la valeur
}
0
Merci bcp mais franchement, je comprends rien....
c du java et je connais pas !
0