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 :

Commande RANDOMIZE


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut Commande RANDOMIZE
    Salut,

    Je suis sour dev-c et lorsque je tape la commande RANDOMIZE () elle n'est pas reconnue.

    Comment cela se fait -il ??
    J'ai pourtant mis au début :
    #include<stdlib.h>

    pourquoi les librairies ne sont pas les même avec dev-c ???
    Pour <conio.h> je dois mettre <conio.c>, c'est pas comme sur mes tutoriaux ...

    Merci d'avance !!!

  2. #2
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut Re: Commande RANDOMIZE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdlib.h>
    #include <time.h>
     
    void randomize(void)
    {
      srand(time(NULL));
    }
    Voilà comment écrire la fonction randomize(). Si randomize n'existe pas sous DevC++, c'est parce que randomize est une fonction non-standard spécifique à Borland C++. Donc rien n'oblige à une implémentation du langage C de la supporter, et en pratique ici, seul BC++ et TC++ les supporte.

    La solution que je te donne est elle parfaitement standard, elle marchera sur toute implémentation du C.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut
    Merci beaucoup pour ta réponse super rapide !!!

    Et pour les bibliothèque sous dev-c++, pourquoi sont-elles differentes certaines ??? : (conio.c à la place de conio.h)

  4. #4
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par goutbouyo
    Et pour les bibliothèque sous dev-c++, pourquoi sont-elles differentes certaines ??? : (conio.c à la place de conio.h)
    C'est le même souci.

    La bibliothèque "conio.h" est une bibliothèque spécifique de Borland C++. Mais DevC++ fournit une émulation partielle de cette librairie sous le nom "conio.c" (pas très heureux, je te l'accorde). Mais elle n'est pas complète, et ce n'est qu'une manière de porter facilement un programme provenant de Borland C++.

    Malheureusement, la gestion de l'écran (comme celle de conio.h) n'existe pas en standard C pur . Tu dois donc forcément être dépendant d'une bibliothèque et/ou de ton OS. Sous Borland, c'est conio.h. Sous DevC++, tu peux utiliser conio.c. Sinon, il y a les fonctions de l'api Windows. Sous Linux, ce sont encore d'autres fonctions.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut
    Même avec ton aide j'y arrive pas

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include<conio.c>
    #include<stdlib.h>
    #include<time.h>
     
    int main ()
    {
           clrscr ();
           int nbre_hasard;
           int nbre_choisi;
     
           nbre_hasard = random (101)
     
    .......
    Je le met ou ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void randomize(void) 
    { 
      srand(time(NULL)); 
    }

    Au fait, c'est bien comme compilateur dev-c++ ????

  6. #6
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut
    Parce que la fonction random() est aussi spécifique Borland.

    Voici ce que tu dois insérer (après les #include et avant le main) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void randomize(void)
    {
      srand(time(NULL));
    }
     
    int random(int max)
    {
      return rand() % max;
    }
    Tu appelles randomize() en début de programme pour éviter d'avoir toujours les mêmes nombres aléatoires à chaque appel du programme.

    PS: Ma fonction random(n) renvoie un nombre compris entre 0 et n - 1. Je ne me rappelle plus si c'est le comportement exact de la fonction Borland

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Commande RANDOMIZE
    Citation Envoyé par goutbouyo
    Je suis sour dev-c et lorsque je tape la commande RANDOMIZE () elle n'est pas reconnue.
    Il n'y a pas de commandes en C. Uniquement des instructions et des fonctions.
    RANDOMIZE() n'est pas une fonction standard (randomize() non plus, d'ailleurs : je rappelle que le C est sensible à la casse)
    Comment cela se fait -il ??
    J'ai pourtant mis au début :
    #include<stdlib.h>
    Certes, mais rien n'oblige telle ou tel compilateur à supporter les fonctions non-standards d'un autre compilateur.

    Les fonctions standards sont srand() et rand().

    pourquoi les librairies ne sont pas les même avec dev-c ???
    Les bibliothèques et fichiers standards sont communs. Les reste, c'est au hasard... Ne pas compter dessus si on veut faire du code portable.
    Pour <conio.h> je dois mettre <conio.c>, c'est pas comme sur mes tutoriaux
    Qui a dit cà? On se tue à répéter que sous Dev-C++, il faut inclure <conio.h> là où c'est nécessaire et ajouter conio.c au projet.

    D'autre part, je considère qu'un tutoriel qui utilise des fonctions non-standard est dangereux, car il donne une idée subjective du langage, alors que la plus grande neutralité est recommandée (s'en tenir au C standard ISO en précisant la version) afin justement d'éviter les problèmes de portage comme les tiens. Il sera toujours temps, une fois qu'on maîtrise le noyau du langage, d'apprendre à utiliser telle ou telle extension.

    Ceci dit, conio est une bibliothèque non-standard. La personne qui a écrit conio.c pour simuler les fonctions du conio original de Borland (Mode texte plein écran sous DOS) et qui l'a mis à la disposition de la distribution de Dev-C++ l'a fait gentiment, pour rendre service, mais je finis par me demander si il a eu raison...

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Anomaly
    PS: Ma fonction random(n) renvoie un nombre compris entre 0 et n - 1. Je ne me rappelle plus si c'est le comportement exact de la fonction Borland
    Alors, vite fait, sous le manteau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define random(num)(int)(((long)rand()*(num))/(RAND_MAX+1))
    #define randomize()     srand((unsigned)time(NULL))
    hop!

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Anomaly
    La bibliothèque "conio.h" est une bibliothèque spécifique de Borland C++.
    Eeek! <conio.h> est un fichier d'en-tête! Pas une bibliothèque. J'essaye de mettre de l'ordre dans les têtes, merci de ne pas tout démolir d'une phrase signée par 6 étoiles rouges! Avec mes 3 étoiles jaunes, je ne peux pas lutter contre ça!

  10. #10
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Eeek! <conio.h> est un fichier d'en-tête! Pas une bibliothèque. J'essaye de mettre de l'ordre dans les têtes, merci de ne pas tout démolir d'une phrase signée par 6 étoiles rouges! Avec mes 3 étoiles jaunes, je ne peux pas lutter contre ça!
    LOL, ce n'est pas parce que j'ai 6 étoiles rouges que je suis infaillible.

    J'ai voulu simplifier pour éviter ensuite d'embrouiller le posteur original avec le #include <conio.c> qui n'est pas un fichier d'en-tête mais un fichier inclu (enfin je suppose ), choix qui n'est guère heureux.

    Mais bon j'admet qu'utiliser les bons termes dès le départ aurait été mieux.

    à moi.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Anomaly
    à moi.
    Shlark! Shlark!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le %random% sous DOS (command.com)
    Par nexus-x dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 09/06/2010, 15h52
  2. la commande random
    Par toasty666 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 17/11/2009, 22h48
  3. La commande randomize
    Par nulinfo dans le forum Débuter
    Réponses: 4
    Dernier message: 02/04/2009, 14h24
  4. Réponses: 3
    Dernier message: 02/09/2002, 18h49
  5. Réponses: 2
    Dernier message: 11/08/2002, 21h27

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