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 :

template fonction aléatoire


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut template fonction aléatoire
    Bonjour,

    je cherche à réaliser une fonction qui genererait un nombre aléatoire entre un minimum et un maximum, j'ai coder ca mais ca me donne une erreur

    invalid operands of types 'int' and 'double' to binary 'operator%'|

    Est ce qu'il faut surcharger l'opérateur % ? Si oui comment faire ?

    Voici le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include<iostream>
    #include<vector>
    #include <ctime>
    #include <cstdlib>
     
    using namespace std;
     
            template<typename T>
        T aleatoire(T minn, T maxx)
        {
            return (minn + (rand () % (maxx-minn+1)));
        }
     
    int main()
    {
        srand(time(0));
        int minimum(5);
        int maximum(10);
        double minimumd(1);
        double maximumd(100);
     
        cout << aleatoire(minimum, maximum) << aleatoire(minimumd, maximumd) << endl;
    }
    Merci d'avance !

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Je pense que la FAQ pourrait te donner quelques pistes.

  3. #3
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Si ce n'est pas dans un but pédagogique, tourne toi vers std::random (C++11) ou boost::random.
    Voici un post qui pourrait t'aider :
    http://www.developpez.net/forums/d13...chier-lecture/
    Et voici uniform distribution de la std (tu pourrais t'inspirer de l'interface à défaut de l'utiliser)
    http://www.cplusplus.com/reference/r..._distribution/

  4. #4
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Salut Neckara et merci de ta réponse, cependant c'est un lien vers la faq C, et quand je regarde et que j'essaye de l'appliquer à mon code, je ne vois pas l'erreur que je j'ai commise.

    Salut Ehonn, une fois de plus merci, j'essaye ce code pour m'entrainer à mieux comprendre les template ^^, mais je vais quand même voir

    Merci à vous encore.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    % est le modulo, il n'est défini que pour un opérande de droite entier.

    avec T=double, l'opérande droit n'est plus entier.

    essaie une conversion, ou interdit le double (et le float)

  6. #6
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Ah ok !

    Donc dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (minn + (rand () % (maxx-minn+1)));
    je dois convertir le resultat de maxx-minn+1 en int ?
    Si oui comment faire ? un cast quelque chose non ? Je me souviens plus ^^

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2008, 09h33
  2. fonction aléatoire sous l'AS 400
    Par tenah34 dans le forum AS/400
    Réponses: 6
    Dernier message: 02/09/2008, 17h08
  3. Fonction aléatoire pas ordinaire
    Par gotrunkssj dans le forum C
    Réponses: 5
    Dernier message: 21/01/2008, 13h09
  4. Excel fonction aléatoire
    Par Biker-Robby dans le forum Excel
    Réponses: 3
    Dernier message: 11/12/2007, 09h17
  5. Fonctions aléatoires pour caractères
    Par IDE dans le forum C
    Réponses: 14
    Dernier message: 13/05/2007, 15h06

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