A voir également:
- Definir Intervale en C
- Définir google comme page d'accueil - Guide
- Définir retrait - Guide
- Definir foyer - Accueil - Guide streaming
- Definir cpu - Guide
- Definir le centre sms - 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é.
bucheron
Messages postés
62
Date d'inscription
samedi 20 mars 2004
Statut
Membre
Dernière intervention
10 décembre 2004
2
18 oct. 2004 à 09:47
18 oct. 2004 à 09:47
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).
bucheron
Messages postés
62
Date d'inscription
samedi 20 mars 2004
Statut
Membre
Dernière intervention
10 décembre 2004
2
18 oct. 2004 à 11:41
18 oct. 2004 à 11:41
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; }
Guki
>
bucheron
Messages postés
62
Date d'inscription
samedi 20 mars 2004
Statut
Membre
Dernière intervention
10 décembre 2004
18 oct. 2004 à 12:02
18 oct. 2004 à 12:02
Tient grace à toi je viens de me rendre compte que while et do while étaient différents. ^^
Le while évalue en 1er tandis que do while en dernier alors en effet la solution do while est compatible et évite la redondance d'affectation.
Le while évalue en 1er tandis que do while en dernier alors en effet la solution do while est compatible et évite la redondance d'affectation.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question