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 :

[C++] Compilation=OK Mais PAS d'exécution


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Chef de produit
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de produit

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 246
    Points
    246
    Par défaut [C++] Compilation=OK Mais PAS d'exécution
    Bonjour à tous,

    j'explique comment mon programme fonctionne:
    j'ai 2 fichiers textes; le premier fichier contient des chaines sous la forme "30;4"
    30 c'est une valeur et 4 c'est un intervalle [-4,4].
    donc je récupère cette chaine je l'a convertie en réel, jusqu'à là ça marche

    j'utilise une fonction de la librairie boost (fonction triangulaire), donc j'essaye de mettre les valeur VN min max comme paramètre dans cette fonction.
    résultat ça compile et mais à l'exécution ça coince au niveau de cette partie TriangleRandomGenerator gen(min, VN, max);

    Merci d'avance de votre aide..

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <fstream>
    #include <boost/random/triangle_distribution.hpp>
    #include <boost/random/variate_generator.hpp>
    #include <boost/random/mersenne_twister.hpp>
    #include <ctime>
    #include <sstream>
    #include <string>
    #include <iostream>
    /*
     * Une classe pour encapsuler les éléments de Boost.Random.
     * Elle-même un foncteur.
     */
    class TriangleRandomGenerator
    {
    public:
        // Le constructeur prend les trois valeurs dont tu parles: a (borne basse),
        // c (borne haute) et b (valeur la plus probable).
        TriangleRandomGenerator(double a, double b, double c);
     
        // Ici on fabrique un foncteur, mais on pourrait aussi bien avoir une méthode
        // comme "double next_number();" qui ferait le même effet
        double operator()();
     
    private:
        boost::mt19937 engine;
        boost::triangle_distribution<double> generator;
        boost::variate_generator<boost::mt19937& ,boost::triangle_distribution<double> > binded;
    };
     
    TriangleRandomGenerator::TriangleRandomGenerator(double a, double b, double c):
    engine(static_cast<long unsigned int>(time(0)))
    , generator(a, b, c)
    , binded(engine, generator)
    {
    }
     
    double TriangleRandomGenerator::operator()()
    {
        return binded();
    }
     
     
    int main()
    {
        double VN, max, min;
     
        //récupération de la valeur nominale du fichier texte "valeur.txt"
        std::ifstream fichier( "valeur.txt" );
        // variable contenant chaque ligne lue
        std::string ligne;
     
        while (std::getline( fichier, ligne ) )
        {
     
            std::string string1 = ligne;
            std::string string2;
            string2 = string1.substr(0, string1.find(';'));
            string1 = string1.substr(string1.find(';')+1);
            //conversion des chaines
            std::istringstream iss( string2 );
            iss >> VN;
            std::istringstream iss1( string1 );
            iss1 >> max;
            //intervalle [min,max]
            min=max*(-1);
            //affichage
            std :: cout << VN << std::endl;
            std :: cout << max << std::endl;
            std :: cout << min << std::endl;
     
     
     
            TriangleRandomGenerator gen(min, VN, max);
            std::ofstream file("fichier.txt", std::ios_base::app);
            for (int i = 0; i < 10; ++i)
                {
                    file << gen() << "\n";
                }
            file.flush();
     
        }
     
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Quel est ton problème? Qu'est-ce qui coince exactement?

    Les seuls points que je vois qu'il faudrait améliorer dans le code:
    • il vaudrait mieux créer le flux de sortie (file) une seule fois en dehors de la boucle plutôt que de le recréer à chaque ligne lue dans "valeur.txt";
    • comme tu crées plusieurs générateurs en moins d'une seconde, et que time renvoie la même valeur pendant cette seconde, la séquence des valeurs aléatoire risque d'être la même. Dans ce cas, il vaut mieux baser l'initialisation sur clock que sur time, ou utiliser un mélange de deux.

  3. #3
    Membre actif
    Homme Profil pro
    Chef de produit
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de produit

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 246
    Points
    246
    Par défaut
    Merci pour tes réponses,

    pour le flux de sortie c'est bon.
    pour remplacement de clock par time je vais voir après.

    sinon voila le message d'erreur:

    30
    4
    -4
    Assertion failed: _a <= _b && _b <= _c, file C:/Program Files/CodeBlocks/include
    /boost/random/triangle_distribution.hpp, line 39

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Tu n'aurais pas tout simplement, dans ton fichier "valeur.txt", un couple de valeurs telles que VN n'est plus entre min et max? C'est ce que suggère ton message d'erreur (une vérification interne faite par Boost.Random sous la forme d'une assertion).

  5. #5
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    le message d'erreur t'indique clairement l'assertion qui a échouée, il suffit d'aller y jeter un coup d'oeil !

  6. #6
    Membre actif
    Homme Profil pro
    Chef de produit
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de produit

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 246
    Points
    246
    Par défaut
    Merci ça marche
    j'ai même pas fait attention à ce truc

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

Discussions similaires

  1. Execution aprés l'affichage, mais pas d'exécution directe
    Par vieux60ans dans le forum Général Python
    Réponses: 3
    Dernier message: 07/02/2013, 22h21
  2. EventScripting : Compilation ok mais pas d'éxécution
    Par RamDevTeam dans le forum Rave
    Réponses: 1
    Dernier message: 15/10/2010, 19h29
  3. [NetBSD] compiler src mais pas tout
    Par gwenhael dans le forum BSD
    Réponses: 13
    Dernier message: 12/03/2008, 19h31
  4. Réponses: 29
    Dernier message: 26/07/2007, 16h24
  5. Réponses: 4
    Dernier message: 08/01/2006, 19h26

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