Definir Intervale en C
Anthony
-
Anthony -
Anthony -
Bonjour tout le monde,
c'est mon premier post sur ce forum et je suis debutant en programation:
Je voudrais savoir svp comment declarer une variable de type Int de facon que sa valeur soit comprise entre 2 entiers 100<x<150
J'utilise Randomize en fait
randomize();
printf("%d\n", rand() % x);
si je mets x=100; il m'imprime une valeur entre 0 et 99,
Comment faire pour qu'il me choisisse une valeur entre 50 et 100 par exemple.
Merci d'avance
c'est mon premier post sur ce forum et je suis debutant en programation:
Je voudrais savoir svp comment declarer une variable de type Int de facon que sa valeur soit comprise entre 2 entiers 100<x<150
J'utilise Randomize en fait
randomize();
printf("%d\n", rand() % x);
si je mets x=100; il m'imprime une valeur entre 0 et 99,
Comment faire pour qu'il me choisisse une valeur entre 50 et 100 par exemple.
Merci d'avance
A voir également:
- Definir Intervale en C
- Définir google comme page d'accueil - Guide
- Definir foyer - Accueil - Guide streaming
- Définir retrait - Guide
- Definir cpu - Guide
- Définir liste déroulante excel - Guide
5 réponses
Salut!
Je pense que tu peux t'en inspirer. ^^
/* test.c public domain */ #include <stdlib.h> #include <stdio.h> int main(void) { int i; int x; for(i = 0; i < 10; i++) { loop: { x = rand(); if((x < 0) || (x > 100)) { goto loop; } } printf("x = %i\n", x); } return EXIT_SUCCESS; }
Je pense que tu peux t'en inspirer. ^^
En plus modulable:
Chaque appel de sprand pourra générer un entier compris dans l'intervalle désiré.
/* test.c public domain */ #include <stdlib.h> #include <stdio.h> int sprand(int min, int max); int main(void) { int i; for(i = 0; i < 10; i++) { int x; x = sprand(0, 100); printf("x = %i\n", x); } return EXIT_SUCCESS; } int sprand(int min, int max) { int x; loop: { x = rand(); if((x < min) || (x > max)) { goto loop; } } return x; }
Chaque appel de sprand pourra générer un entier compris dans l'intervalle désiré.
Whaaooo !!
Ca doit faire des années (depuis que j'ai arrêté le BASIC en CE2, à vrai dire), que je n'ai pas vu de GOTO !!
Pour paraphraser mon prof de programmation système :
"un GOTO, c'est mal !!"
En d'autre terme, le C est un langage suffisament complet pour trouver _presque_ toujours une alternative au *beurk* GOTO.
Si mes souvenir sont bon, tout le code source du noyau linux ne comporte qu'1 GOTO, c'est pour dire ...
Mais merci en tout cas pour cette minute "nostalgie" ;-)
Ca doit faire des années (depuis que j'ai arrêté le BASIC en CE2, à vrai dire), que je n'ai pas vu de GOTO !!
Pour paraphraser mon prof de programmation système :
"un GOTO, c'est mal !!"
En d'autre terme, le C est un langage suffisament complet pour trouver _presque_ toujours une alternative au *beurk* GOTO.
Si mes souvenir sont bon, tout le code source du noyau linux ne comporte qu'1 GOTO, c'est pour dire ...
Mais merci en tout cas pour cette minute "nostalgie" ;-)
si tu veux un entier entre 50 et 100
tu n as qu a faire :
int x = 50 + (rand() %51);
plus generalement si tu veux un entier entre min et max
int x = min + (rand() % (max - min + 1));
tu n as qu a faire :
int x = 50 + (rand() %51);
plus generalement si tu veux un entier entre min et max
int x = min + (rand() % (max - min + 1));
/* test.c public domain */ #include <stdlib.h> #include <stdio.h> int sprand(int min, int max); int main(void) { int i; for(i = 0; i < 10; i++) { int x; x = sprand(0, 100); printf("x = %i\n", x); } return EXIT_SUCCESS; } int sprand(int min, int max) { int x; x = rand(); while(x < min) || (x > max)) { x = rand(); } return x; }
Voilà qui fera plaisir les allergiques du goto cependant cette alternative me semble moins jolie et redondante (affectation).
Voilà qui fera plaisir les allergiques du goto
Ce n'est pas une allergie :
"Rumour has it that the goto statement should be avoided because the program flow will jump all over the place, generating what's known as SPAGHETTI CODE!
No harm in using it in the most simplest of programs though, but don't make a habit of using it!! "
(lu sur http://www.iota-six.co.uk/c/d3_switch_break_and_goto_statements.asp)
Alors, pour que ça ne devienne pas une habitude, autant ne pas l'utiliser du tout.
cette alternative me semble moins jolie et redondante (affectation).
C'est pour cela qu'a été inventée la boucle "do ... while" !!
Ce n'est pas une allergie :
"Rumour has it that the goto statement should be avoided because the program flow will jump all over the place, generating what's known as SPAGHETTI CODE!
No harm in using it in the most simplest of programs though, but don't make a habit of using it!! "
(lu sur http://www.iota-six.co.uk/c/d3_switch_break_and_goto_statements.asp)
Alors, pour que ça ne devienne pas une habitude, autant ne pas l'utiliser du tout.
cette alternative me semble moins jolie et redondante (affectation).
C'est pour cela qu'a été inventée la boucle "do ... while" !!
int sprand(int min, int max) { int x; do { x = rand(); } while(x < min) || (x > max)); return x; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question