Tableau trié en pascal
alphx
-
aLphX -
aLphX -
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
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:
- Tableau trié en pascal
- Turbo pascal - Télécharger - Édition & Programmation
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- My pascal - Télécharger - Édition & Programmation
2 réponses
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.
- 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.
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
}