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();
 
    }
 
}