16 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 mai 2006 à 09:36
25 mai 2006 à 09:36
http://tinyurl.com/osxke
Salut,
en suivant le lien que tu as donné, j'ai écrit ceci pour avoir un nombre compris entre 0 et 100:
Le problème est que j'obtiens ceci :
en suivant le lien que tu as donné, j'ai écrit ceci pour avoir un nombre compris entre 0 et 100:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void){ int val1, val2, val3; char buff[BUFSIZ]; srand((unsigned)time(NULL)); //Pour avoir des nombres a>=0 et b<=100 val1 = (int)((float)rand()*(100+1)/(RAND_MAX+1)); val2 = (int)((float)rand()*(100+1)/(RAND_MAX+1)); val3 = (int)((float)rand()*(100+1)/(RAND_MAX+1)); sprintf(buff, "%d,%d,%d",val1,val2,val3); printf("%s\n", buff); return 0; }
Le problème est que j'obtiens ceci :
aleatoire.c: In function ‘main’: aleatoire.c:14: attention : débordement d'entier dans l'expression aleatoire.c:15: attention : débordement d'entier dans l'expression aleatoire.c:16: attention : débordement d'entier dans l'expression
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 mai 2006 à 16:11
25 mai 2006 à 16:11
Salut,
Je voudrais savoir comment faire pour que le chiffre 100 puisse être pris en compte or avec mon code, ce n'est pas le cas.
Ben, met au lieu de 100 met 101
lami20j
Je voudrais savoir comment faire pour que le chiffre 100 puisse être pris en compte or avec mon code, ce n'est pas le cas.
Ben, met au lieu de 100 met 101
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void){ int val1, val2, val3; char buff[BUFSIZ]; srand((unsigned)time(NULL)); val1 = rand()%101; val2 = rand()%101; val3 = rand()%101; sprintf(buff, "%d,%d,%d",val1,val2,val3); printf("%s\n", buff); return 0; }et 100 va sortir, aussi 0. J'ai testé.
lami20j
Je voudrais savoir comment je pourrais pour faire apparaître les chiffres de 1 à 100 (merci pour le code de départ il m'a donné un peu espoir déjà)
Merci d'avance
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
9 août 2006 à 10:54
9 août 2006 à 10:54
Tu veux un tirage aléatoire ou afficher tous les chiffres de 1 à 100 ?
Si c'est le premier cas, le code est au dessus (et génère 3 nombres), si c'est le deuxième :
Si c'est le premier cas, le code est au dessus (et génère 3 nombres), si c'est le deuxième :
int main() { int i=1; while (i < 101) { printf("%d ",i); i++; } return 0; }Ca te les affichera tous à la suite ... Tu peux introduire des sauts de ligne avec \n dans le printf.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
10 août 2006 à 13:39
10 août 2006 à 13:39
plus général. On veut un interval [xmin,xmax]
alors la solution est:
rand()%(xmax-xmin+1)+xmin;
voila, pour anticiper la prochaine question :
et pour avoir des nombre alléatoire compris entre 1 et 101, comment faut-il que je fasse ?
alors la solution est:
rand()%(xmax-xmin+1)+xmin;
voila, pour anticiper la prochaine question :
et pour avoir des nombre alléatoire compris entre 1 et 101, comment faut-il que je fasse ?
aucun des codes ne marchent j'ai besoin d'un code de tirage au sort de 1 a 100 et un autre de 1 à 3
des codes en entier qui marche svp
merci ce qui m'aide
des codes en entier qui marche svp
merci ce qui m'aide
Salut!
Si tu veux un code de tirage au sort de 1 a 100 et un autre de 1 à 3, je te propose ceci:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
/* déclarations */
int i;
int ch100,ch3,ch3_1,ch3_2,ch3_3;
srand(time(NULL));
/* boucle pour 5000 tirages, histoire de voir ci 1 et 100 sont pris en compte */
for (i=0;i<5000;++i)
{
/* Nb de 1 a 100 */
ch100 = rand () % 100;
/* Nb de 1 a 3 */
ch3 = rand () % 3;
/* affichage */
printf ("*** TIRAGE No %d:\nNb hazard de 1 a 100: %d\nNb hazard de 1 a 3: %d\n",i+1,ch100+1,ch3+1);
/* test pour voir si 1 et 100 sont bien pris en compte */
if (ch100+1==100 || ch100+1==1)
{
printf("\n* TOUVE %d au tirage: %d *\n",ch100+1,i+1);
system ("pause");
}
}
system("PAUSE");
return 0;
}
Maintenant, si tu veux un code qui tire au sort 3 chiffres de 1 a 100 je te propose ceci:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
/* déclarations */
int i;
int val_1,val_2,val_3;
srand(time(NULL));
/* 3 Nb de 1 a 100 */
val_1 = rand () % 100;
val_2 = rand () % 100;
val_3 = rand () % 100;
/* affichage */
printf ("*** TIRAGE de 3 nombres entre 1 et 100:\n\n"
"nombre 1: %d\nnombre 2: %d\nnombre 3: %d\n\n",val_1+1,val_2+1,val_3+1);
system("PAUSE");
return 0;
}
En fait, il faut ajouter 1 à ta valeur de base.
Si tu veux un code de tirage au sort de 1 a 100 et un autre de 1 à 3, je te propose ceci:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
/* déclarations */
int i;
int ch100,ch3,ch3_1,ch3_2,ch3_3;
srand(time(NULL));
/* boucle pour 5000 tirages, histoire de voir ci 1 et 100 sont pris en compte */
for (i=0;i<5000;++i)
{
/* Nb de 1 a 100 */
ch100 = rand () % 100;
/* Nb de 1 a 3 */
ch3 = rand () % 3;
/* affichage */
printf ("*** TIRAGE No %d:\nNb hazard de 1 a 100: %d\nNb hazard de 1 a 3: %d\n",i+1,ch100+1,ch3+1);
/* test pour voir si 1 et 100 sont bien pris en compte */
if (ch100+1==100 || ch100+1==1)
{
printf("\n* TOUVE %d au tirage: %d *\n",ch100+1,i+1);
system ("pause");
}
}
system("PAUSE");
return 0;
}
Maintenant, si tu veux un code qui tire au sort 3 chiffres de 1 a 100 je te propose ceci:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
/* déclarations */
int i;
int val_1,val_2,val_3;
srand(time(NULL));
/* 3 Nb de 1 a 100 */
val_1 = rand () % 100;
val_2 = rand () % 100;
val_3 = rand () % 100;
/* affichage */
printf ("*** TIRAGE de 3 nombres entre 1 et 100:\n\n"
"nombre 1: %d\nnombre 2: %d\nnombre 3: %d\n\n",val_1+1,val_2+1,val_3+1);
system("PAUSE");
return 0;
}
En fait, il faut ajouter 1 à ta valeur de base.
Salut, antoine03
Quelle est ta question precise?
Car les 2 petits progs que je t'ai donnés plus haut fonctionnent bel et bien à condition que tu soit sous Windows Xp ou 98 pour la compilation et l'execution.
Si tu es sous Vista, il faut trouver le bon compilateur avec d'éventuelles retouches (ex: IccWin32), mais l'exe marche tout aussi bien.
(Les 2 progs ci-dessus ont été fait en C sous dev Cpp).
Quelle est ta question precise?
Car les 2 petits progs que je t'ai donnés plus haut fonctionnent bel et bien à condition que tu soit sous Windows Xp ou 98 pour la compilation et l'execution.
Si tu es sous Vista, il faut trouver le bon compilateur avec d'éventuelles retouches (ex: IccWin32), mais l'exe marche tout aussi bien.
(Les 2 progs ci-dessus ont été fait en C sous dev Cpp).
des xp et 98 on en trouve plus en magazin bien sur que j'ai vista xD
je n'y connais rien du tous moi je cherhe un tirage au sort de 1 à 100 pour que sa tire au sort un seul numéro de 1 à 100 et un autre de 1à3.
je n'y connais rien du tous moi je cherhe un tirage au sort de 1 à 100 pour que sa tire au sort un seul numéro de 1 à 100 et un autre de 1à3.
Voici donc un prog que tu peux recopier, et qui t'affichera 1 nombre au hazard de entre 1 et 100, et un autre entre 1 et 3.
Chaque fois que tu relanceras le prog, tu auras un chiffre different entre 1 et 100 etun autre entre 1 et 3.
Dans tous les cas, le resultat n'affichera jamais 0, mais il pourra afficher 100 pour de 1 à 100 et 3 pour de 1 à 3.
Si tu fais un copier-coller de ce prog dans Iccwin32, ou visual, tu auras le resultat decrit plus haut!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
/* déclarations */
int nb1_100,nb1_3;
srand(time(NULL));
/* Nb de 1 a 100 au hazard */
nb1_100 = rand () % 100;
/* Nb de 1 a 3 au hazard */
nb1_3 = rand () % 3;
/* affichage */
printf ("*** Nb pris au hazard de 1 a 100: %d\n*** Nb pris au hazard de 1 a 3: %d\n",nb1_100+1,nb1_3+1);
system("PAUSE");
return 0;
}
Chaque fois que tu relanceras le prog, tu auras un chiffre different entre 1 et 100 etun autre entre 1 et 3.
Dans tous les cas, le resultat n'affichera jamais 0, mais il pourra afficher 100 pour de 1 à 100 et 3 pour de 1 à 3.
Si tu fais un copier-coller de ce prog dans Iccwin32, ou visual, tu auras le resultat decrit plus haut!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
/* déclarations */
int nb1_100,nb1_3;
srand(time(NULL));
/* Nb de 1 a 100 au hazard */
nb1_100 = rand () % 100;
/* Nb de 1 a 3 au hazard */
nb1_3 = rand () % 3;
/* affichage */
printf ("*** Nb pris au hazard de 1 a 100: %d\n*** Nb pris au hazard de 1 a 3: %d\n",nb1_100+1,nb1_3+1);
system("PAUSE");
return 0;
}
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
31 mars 2008 à 08:56
31 mars 2008 à 08:56
Tu es trop gentil.
Moi, il me faudrait un programme C qui me demande les types de fichier multimédia que je veux et qui va les cherché sur mon disque dur, qui me fait une liste et les trie.
Tu peux me faire ça ?
Moi, il me faudrait un programme C qui me demande les types de fichier multimédia que je veux et qui va les cherché sur mon disque dur, qui me fait une liste et les trie.
Tu peux me faire ça ?
je croyais t'avoir dis que je n'y connaisé rien donc je te le dis je n'y coné rien mdr enfaite je sais pas se que c'est un compilateur on peus dire que j'en aprend tous les jours moi j'avais fais copier collé sur mon site en croyant que sa allez marché mdr !!!!
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
1 avril 2008 à 08:40
1 avril 2008 à 08:40
faut dire, tu n'expose pas non plus ton problème correctement, et tu ne dit pas ce que tu veux faire.
Là tu es dans le forum programmation, sur un message qui parle d'un programme écris en C. Donc, on te répond comme à quelqu'un qui fait du C.
Vu que tu parle de site, je devine que c'est pour une page internet. Le mieux est d'ouvrir un nouveau message dans le forum Webmastering et de poser exactement ta question (ce que tu veux faire dans quel domaine et avec quels outils)
Là tu es dans le forum programmation, sur un message qui parle d'un programme écris en C. Donc, on te répond comme à quelqu'un qui fait du C.
Vu que tu parle de site, je devine que c'est pour une page internet. Le mieux est d'ouvrir un nouveau message dans le forum Webmastering et de poser exactement ta question (ce que tu veux faire dans quel domaine et avec quels outils)