Trier un tableau de manière aléatoire [Résolu]

nisaloncaje 154 Messages postés samedi 7 janvier 2006Date d'inscription 28 septembre 2008 Dernière intervention - 7 janv. 2006 à 22:21 - Dernière réponse : cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention
- 8 janv. 2006 à 15:33
Bonjour, je suis débutant en c et j'aimerais savoir comment est-il possible de trier un tableau de manière aléatoire ? je m'explique :
j'ai un tableau qui s'appelle tab et qui contient tous les nombres entiers de 1 a 50 inclus

j'aimerais que ce tableau soit 'mélangé' mais je ne sais pas comment faire :(

Merci de m'aider

nc
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 7 janv. 2006 à 22:35
3
Merci
Refais direct son remplissage, tu iras aussi vite.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de BruNews
nisaloncaje 154 Messages postés samedi 7 janvier 2006Date d'inscription 28 septembre 2008 Dernière intervention - 7 janv. 2006 à 22:37
0
Merci
daccord, mais comment faire pour le remplir avec les nombres dans le désordre (il faut que les nombres n'apparaissent qu'une seule fois )
Commenter la réponse de nisaloncaje
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 7 janv. 2006 à 23:06
0
Merci
Je l'ai mis sur le forum il n'y a pas si longtemps, fouille et tu trouveras.
C'est très simple, srand() 1 fois au début et rand() ensuite.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 7 janv. 2006 à 23:21
0
Merci
Regarde, ça devrait aller:

srand(GetTickCount()); // 1 FOIS AU DEBUT DU PROG


FONCTION DE REMPLISSAGE:
int n, i, pos;
pos = 0;
do {
nextN:
n = (rand() % 50) + 1; // ENTRE 1 et 50 INCLUS for(i 0; i < pos; i++) if(n tab[i]) goto nextN;
tab[pos++] = n;
} while(pos < 50);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 8 janv. 2006 à 00:00
0
Merci
euh y'a pas un blème tab[pos++]

il va remplir en premier tab[1] et ça va planter non ?
if(!Meilleur("Joky")) return ERREUR;<
Commenter la réponse de cs_Joky
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 8 janv. 2006 à 00:49
0
Merci
tab[pos++] = n;
se décompose en:
1) tab[pos] = n; // commence bien à 0
2) pos++;

tab[++pos] = n;
commencerait à 1, ne pas confondre PRE et POST incrémentation.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
nisaloncaje 154 Messages postés samedi 7 janvier 2006Date d'inscription 28 septembre 2008 Dernière intervention - 8 janv. 2006 à 10:50
0
Merci
merci, deux petites choses : tout d'abord : dans quelle librairie et la fontion GetTickCount() ?

est ce que vous pourriez m'expliquer chaque ligne de code, car étant un grand débutant en c j'ai du mal a comprendre le script :)
Commenter la réponse de nisaloncaje
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 8 janv. 2006 à 11:04
0
Merci
GetTickCount() appartient au monde Windows, tu peux utiliser time(NULL) si autre plateforme.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
nisaloncaje 154 Messages postés samedi 7 janvier 2006Date d'inscription 28 septembre 2008 Dernière intervention - 8 janv. 2006 à 11:06
0
Merci
mon compilateur ne veut pas compiler, il me dit [Linker error] undefined reference to `GetTickCount'
Commenter la réponse de nisaloncaje
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 8 janv. 2006 à 15:33
0
Merci
Ahhhhh !

j'pensais que c'était pareil lol le ++pos et le pos++



et pour ton GetTickCount il faut inclure <windows.h>
if(!Meilleur("Joky")) return ERREUR;<
Commenter la réponse de cs_Joky

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.