Tirage aléatoire de 7 nombres compris entre 1 et 49 - C - Programmation
Marsh Posté le 03-11-2007 à 12:22:56
Il faut appeler srand une et une seule fois, au debut de ton programme.
Tu n'as pas le droit d'imbriquer des fonctions en C. La prochaine fois, poste au moins un exemple qui compile.
Marsh Posté le 03-11-2007 à 14:29:09
zondervan a écrit : Voila ce que j'ai fais, sauf qu'il me sort a chaque fois les mêmes nombres |
En plus de ce qui a été dit, rand() est une fonction standard. Tu n'as pas le droit de la redéclarer. C'est fait dans <stdlib.h>.
http://mapage.noos.fr/emdel/notes.htm#rand
Marsh Posté le 03-11-2007 à 14:51:08
Emmanuel Delahaye a écrit : |
En fait, dans son exemple, il ne la redefinit pas, il la redeclare ( a cause du point-virgule, mais a mon avis ca n'est pas fait expres ...)
Marsh Posté le 03-11-2007 à 17:13:06
Ace17 a écrit : En fait, dans son exemple, il ne la redefinit pas, il la redeclare ( a cause du point-virgule,<...> ) |
Exact, je me suis laissé aveugler par d'autres commentaires, et je n'ai pas vu le ';'. J'ai corrigé.
Marsh Posté le 03-11-2007 à 17:22:14
j'ai essayer de corriger mes fautes mais j'ai toujours un problème! merci de votre aide!
|
Marsh Posté le 03-11-2007 à 17:24:58
Peut-etre qu'il faut faire appel à srand() avant de faire appel à rand() ?
Et surtout qu'il faut faire appel à rand() dans la boucle et pas à l'initialisation de n.
(Chaque fois que tu écris n ça n'appelle pas rand(), hein ?)
Et je vois pas bien l'utilité de ton %i si tu veux des nombres entre 1 et 49 inclus...
Marsh Posté le 03-11-2007 à 17:55:25
excusez moi je peux pas tous savoir....
|
Marsh Posté le 03-11-2007 à 18:08:59
zondervan a écrit : excusez moi je peux pas tous
|
Cela dit faut ensuite vérifier que chaque nombre est unique -> au boulot
Marsh Posté le 03-11-2007 à 19:25:17
zondervan a écrit : excusez moi je peux pas tous savoir....
|
On te dit que srand() ne doit être appelé qu'une seule fois. Tu es dur d'oreille ou quoi ?
D'autre part, je rappelle que si une structure de code agit sur plus d'une instruction, les {} sont obligatoires. Ton code une fois ré-indenté donne :
Code :
|
ce qui n'est probablement pas ce que tu veux...
Marsh Posté le 04-11-2007 à 01:56:39
Avec remise :
Code :
|
Sans remise :
Code :
|
Marsh Posté le 04-11-2007 à 09:44:56
T'as tout compris a la pedagogie toi ... Tous les gars qui ont poste sur ce topic sont capables d'ecrire cette fonction. Mais si on l'a pas fait, c'est que y'avait une raison ...
Marsh Posté le 04-11-2007 à 15:04:24
Ace17 a écrit : |
La pédagogie c'est aussi d'arrêter les frais quand tu vois que la personne n'a absolument rien compris et part à totonnement sur des algorithmes sans queue ni tête.
Autant lui donner la correction et une bonne base de travail pour l'aider à comprendre/apprendre (du moins si elle est assez intelligente pour ne pas faire un copier/coller sans chercher à comprendre).
Marsh Posté le 05-11-2007 à 07:34:06
OK, donc le jour ou j'ai besoin d'un code tout fait, je sais qu'il me suffira de poster ici une fonction sans queue ni tete a la limite du compilable dont la seule qualite sera de comporter quelques appels aux bonnes API (histoire de dire que c'est pas completement au pif) ... jusqu'a ce que quelqu'un me prenne en pitie et m'ecrive mon code.
D'autant plus que balancer la solution juste apres que deux intervenants aient pris la peine de rediger des reponses comportant des indications, c'est un peu un manque de respect envers eux.
Marsh Posté le 03-11-2007 à 09:48:15
Hello tout le monde, je dois dois donc faire un genre de loto flash pour tirer aléatoirement de 7 nombres compris entre 1 et 49.
Je dois utiliser int rand(void) void srand(int) x=time(NULL) et il est précier que diviser un nombre entier par un nombre entier non nul n permet d'obtenir un reste <n....
Voila ce que j'ai fais, sauf qu'il me sort a chaque fois les mêmes nombres
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i,X,s;
int n=rand()%49+1;
int rand(void);
{
X=time(NULL);
srand(X);
for (i = 1; i <= 7; i = i+1)
printf("%d\n", n/i);
}
system("pause" );
return 0;
}
En vous remerciant de votre futur aide.
Message édité par zondervan le 03-11-2007 à 09:49:11