Salut a tous ,
Voila j'ai besoin pour mon programme de generer un tirage aleatoir de nombre compris entre 0 et 20 sans repetition .
Il serai gentil si quelqu'un pouvai mecrir un petit bout de code me permetant de le faire.
Merci d'avance.
Salut a tous ,
Voila j'ai besoin pour mon programme de generer un tirage aleatoir de nombre compris entre 0 et 20 sans repetition .
Il serai gentil si quelqu'un pouvai mecrir un petit bout de code me permetant de le faire.
Merci d'avance.
Il faut que tu cherches un peu dans la FAQ C avant de demander.
http://c.developpez.com/faq/c/?page=..._random_bornes
Ou encore (tu aurais trouver en utilisant la fonction rechercher) :
http://emmanuel-delahaye.developpez.com/notes.htm#rand
Merci beaucoup , mais j'ai cherché pourtantje doit pas etre tres douer dans ce domaine.
Merci encore!
Par contre j'ai encore un petit soucil : je ne sais pas comment definir le fait que le nombre soit compris entre deux valeurs.
Si c'est entre 0 et 20.
Tu appelles la fonction alea(20) de la FAQ (il faut reprendre le source).
Par contre, tu cherches des nombres aléatoires sans répétition... C'est un peu contradictoire. Tu cherches en fait à générer une permutation aléatoire de 21 entiers distincts entre 0 et 20 ?
EDIT : Si c'est ça et que c'est un problème d'algorithmique, je t'invite à lire ce lien :
http://www.developpez.net/forums/sho...d.php?t=191130
Pour coder la permutation, tu peux par exemple utiliser (sauf erreurs):
L'utilisateur est supposé intelligent et ne pas rentrer un N supérieur à P
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include <stdio.h> #define N 10 // N le nombre de valeurs à générer #define P 20 // P la valeur maximale de tes entiers aléatoires main() { srand((int)time(NULL)); int tab[N], i=0, j=0, S=0, n; while (S<N) { n=rand()%P; j=0; while (j<S) if (n==tab[j]) { n=rand()%P; j=0; } else j++; tab[S]=n; S++; } for (i=0; i<N; i++) printf("%d ", tab[i]); getch(); }![]()
Un des prototypes accepté du main est :Envoyé par babar56
avec un joli :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int main(void);
à la fin...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 return EXIT_SUCCESS;
Depuis quand est-ce qu'un utilisateur est intelligent ?L'utilisateur est supposé intelligent et ne pas rentrer un N supérieur à P![]()
Jc
Comme tu le dis si bien fearyourself, en l'occurence ça ne sert à rien d'autre qu'à faire joli. Et je suis persuadé que kaiko n'a rien compris à ton intervention![]()
Faut quand même pas se leurrer, le commun des mortels se moque pas mal de créer un code parfaitement portable, et aspire encore moins à faire partie du club très prisé des puristes de la programmation.
Le commun des mortels ne programme pas. Mais bon, tant qu'à faire, si l'on commence à programmer, autant bien le faire.Envoyé par babar56
Et on ne répond pas uniquement pour la personne qui a posé la question, mais pour tout le monde aussi (ce forum est un partage de connaissance). Alors autant que tout le monde puisse voir des corrections exhaustives du code.
Bah, le fait de mettre des options de compilation plus importantes à gcc permet souvent de voir des erreurs. Donc pourquoi se passait de ça ? C'est un gain de temps appréciable dans la plupart des cas.des puristes de la programmation.
Enfin, je sors du sujet. Je ne reviendrais plus là dessus![]()
Tu sais millie, il y a des tas de gens qui écrivent comme prototype main() et qui sont catalogués "côté obscure de la force" par les puristes, et qui ne le savent même pas. Y a un moment donné où c'est quand même pas de leur faute si on leur apprend à programmer comme ça, et si ça fonctionne. Ou alors c'est un vaste complot organisé par gcc, devc++ et compagnie, pour ne pas afficher de message d'erreur à la compilation avec les paramètres standards.Envoyé par millie
Ah mais si tu te sens d'attaque pour faire des corrections exhaustives, tu vas sans doute pouvoir trouver l'erreur dans mon topic SudokuEnvoyé par millie
![]()
Mouarf toi-même. Evite de prendre les gens pour des abrutis...Envoyé par babar56
n'est pas programmeur C. Quelque chose à ajouter ?Faut quand même pas se leurrer, le commun des mortels
Bah et faire partie du club de ceux dont le code compile et fonctionne correctement, ça te va ?se moque pas mal de créer un code parfaitement portable, et aspire encore moins à faire partie du club très prisé des puristes de la programmation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /* ne compile pas en C99 et c'est un comportement indefini en C90 */ main (void) { }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 /* c'est un comportement indefini en C90 */ int main (void) { }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /* ne compile pas en C99 */ main (void) { return 0; }C'est pas compliqué d'écrire du code portable et correct.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /* portable C90 et C99 */ int main (void) { return 0; }
Si tu penses vraiment ce que tu écris et que tu agis de même, tu ne mérites pas d'être programmeur. Tu représentes même un danger pour cette profession et pour les utilisateurs de tes programmes qui seraient amenés à y confier leur vie... (avionique, nucléaire, espace...)
Vu le nombre de personnes qui programment en C, je serais tenté de dire que réellement le commun des mortels programme en C... bien ou pas, ça c'est u autre débat !
Contrairement à toi, je me base sur mon expérience récente de cours en C dans différents milieux pas forcément en rapport direct avec la programmation (faculté de mathématiques, école d'ingénieurs en géophysique). Force est de constater qu'on se moque pas mal du prototype de main et que mes enseignants ont toujours utilisés main() sans faire allusion aux prototypes standards. Donc je me garderais bien de considérer qu'une personne est un abruti quand il se trouve dans un système où cette partie du programme est tout simplement ignorée.Envoyé par Emmanuel Delahaye
Faut-il nécessairement être programmeur en C pour faire du C ? Il y a des gens qui codent chez eux et font autre chose dans la vie, et tu sais la plupart de ces gens se moquent pas mal de créer un code portable ou non.Envoyé par Emmanuel Delahaye
Si j'avais à écrire un code portable je saurais le faire. Tu te trompes donc de cible. C'est du côté des enseignants qu'il faut frapper, parce que la majorité de leurs étudiants ne font pas la démarche d'aller sur des forums de C et de voir comment on code ailleurs.Envoyé par Emmanuel Delahaye
Moi, je défends juste les gens qui codent pour le plaisir et qui se font littéralement agresser par des vieux éléphants qui brandissent leur "/* portable C90 et C99 */" comme si c'était le nouveau testament.
Envoyé par babar56
La programmation et l'informatique en général est un outil au service de métiers. Il est mis en oeuvre au coup par coup par les professionnels de l'informatique sur demande du client qui est spécialiste de son métier.
Maintenant, que quelqu'un qui n'est pas programmeur professionnel utilise directement l'outil informatique pour réaliser des mini projets liés à son métier, pourquoi pas. Mais est-ce une raison pour le faire mal ? Il n'y a aucune arrière pensée élitiste quand on dit à un programmeur occasionnel qu'il ne respecte pas la norme.
Au contraire, on cherche à aider, c'est tout. Les normes ne sont pas la pour faire chier le mode mais au contraire pour l'organiser, le rendre cohérent et compatible.
Maintenant, si tu tiens à rester un bricoleur du dimanche, ben, faut pas venir poster sur les forums de professionnels, ou alors il faut créer une catégorie 'bidouilleurs' dans laquelle je n'irais pas perdre mon temps...
Est-ce une raison suffisante pour envoyer paitre ceux qui font un 'rappel au règlement' ? C'est ton esprit rebelle ? Tu refuses toute autorité ? C'est ça ?Force est de constater qu'on se moque pas mal du prototype de main et que mes enseignants ont toujours utilisés main() sans faire allusion aux prototypes standards.
Je sais bien qu'il y a un gros problème d'enseignement de l'informatique, et en tant que formateur indépendant, je suis en première ligne. les problèmes ont deux origines bien connues :
- La plupart des universitaires n'ont jamais été confrontés au terrain
- Ils se reproduisent entre-eux. (métaphore inside)
C'est pas écrit dessus... Moi aussi, je connais aussi de bons bricoleurs de maison (électricité, peinture, voire plomberie) qui ont un savoir faire et une connaissance technique qui n'a rien à envier à celle d'un professionnel. Par contre une méconnaissance des normes (distance de sécurité pour les prises de courants en milieu humide, par exemple) peut s'avérer mortelle. Donc, la prudence s'impose, l'avis d'un professionnel aussi, parfois...Faut-il nécessairement être programmeur en C pour faire du C ? Il y a des gens qui codent chez eux et font autre chose dans la vie, et tu sais la plupart de ces gens se moquent pas mal de créer un code portable ou non.
Agresser, faut pas exagérer. mais le C, c'est pas un langage de bidouilleur. Trop laxiste. Il faut travailler avec méthode et bien connaitre la norme pour prétendre programmer sérieusement en C. De plus, c'est plutôt spartiate comme langage...Moi, je défends juste les gens qui codent pour le plaisir et qui se font littéralement agresser par des vieux éléphants qui brandissent leur "/* portable C90 et C99 */" comme si c'était le nouveau testament.
Pour s'amuser, il vaut mieux VB, Python, Ruby...
Enfin, tout dépend de ce que tu entends par 'pour le plaisir...'
Et puis se faire traiter de vieil éléphant par Babar56...![]()
effectivement. Si tu codes pour ton plaisir, un petit prgm rien que pour toi, aucun pb qu'il soit ou non portable.Envoyé par babar56
Pour ma part, je fais un prgm pour des clients et suivant les services qui vont l'utiliser, il doit marcher sous windows et unix. De plus, parfois ils ont des machines un peu obsolètes et je ne pense pas qu'ils soient des champions en programmation. Ce qu'ils veulent c'est compiler mon prgm, l'exécuter, et avoir accès au code source pour qu'un gars puisse le modifier un jour. Mon code doit donc prévoir pas mal de cas et... être portable !
A qui le dis-tu...Envoyé par Emmanuel Delahaye
Ceci étant, je me bats dans ma fac pour faire valoir les régles de base qu'on défend ici. On verra si les personnes que j'ai convaincu prendront notes et enseigneront de facon correcte le C... J'en doute![]()
Jc
Partager