IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probléme de boucle?


Sujet :

C

  1. #21
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    comment je pourais fais pour generer des nombres de 1 à 20 avec seuleument la foncion rand de la bibliotheque #include <stdlib.h>?


    Car pour le programme j'ai utiliser la fontion srand (time(NULL)); de la bibliotheque #include <time.h>

    Quelqu'un aurait une idée ?

  2. #22
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par conceicao
    comment je pourais fais pour generer des nombres de 1 à 20 avec seuleument la foncion rand de la bibliotheque #include <stdlib.h>?


    Car pour le programme j'ai utiliser la fontion srand (time(NULL)); de la bibliotheque #include <time.h>

    Quelqu'un aurait une idée ?
    Une seule :
    Pas de Wi-Fi à la maison : CPL

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    Ok , c'est ce que j'avais regarder hier mais je comprend pas bien la formule.
    En détail cela fais quoi? si par exemple si j'ai

    Max = 20 et Min = 0


    nombre1 = (rand() % (MAX - MIN + 1)) + MIN;

  4. #24
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par conceicao
    Ok , c'est ce que j'avais regarder hier mais je comprend pas bien la formule.
    En détail cela fais quoi? si par exemple si j'ai

    Max = 20 et Min = 0


    nombre1 = (rand() % (MAX - MIN + 1)) + MIN;
    La fonction rand te renvoie un entier entre 0 et RAND_MAX (http://man.developpez.com/man3/rand.3.php). rand() % 21 te permet donc d'obtenir de manière aléatoire entre 0 et 20 (c'est de l'arithmétique). Si maintenant MAX vaut 20 et MIN vaut 10, rand() % (MAX-MIN +1) te permet de générer aléatoirement un entier entre 0 et 10. Comme tu es intéressé à obtenir un entier entre 10 et 20, tu ajoutes encore la valeur de MIN, ce qui donne:

    (rand() % (MAX-MIN+1)) + MIN


    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #25
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par conceicao
    Ok , c'est ce que j'avais regarder hier mais je comprend pas bien la formule.
    En détail cela fais quoi? si par exemple si j'ai

    Max = 20 et Min = 0


    nombre1 = (rand() % (MAX - MIN + 1)) + MIN;
    Dans l'énoncé, MIN vaut 1, non ?


    Cette formule est repose sur le principe suivant :
    rand() retourne un nombre entre 0 et RAND_MAX (quelques milliers).
    % est l'opérateur 'reste de la division entière'

    Par exemple 21 % 4 = 1 (21 / 4 = 5, reste 1)

    rand % X retourne donc un nombre entre 0 et X - 1 (expérimente %, tu verras)

    rand % 20 retourne donc un nombre entre 0 et 19 (c'est à dire 20 - 1)

    Si j'ajoute 1 à ce résultat, j'ai bien un nombre entre 1 et 20

    C'est de l'arithmétique élémentaire...

    Edit : grillaid..
    Pas de Wi-Fi à la maison : CPL

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Points : 12
    Points
    12
    Par défaut
    oui c'est vrai j'ai compris , un grand merci pour ses explication

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo