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 :

aide pour un programme a compiler


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut aide pour un programme a compiler
    slt j'essaie de compilier ca mais ca ne marche pas .. qu'un pour m'aider ? merci



    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
    /**********************************************************************************
    buildBDT : constructs a BDT tree calibrated to the yield
    [in] vector<double> yield_curve : vector of yield curve
    int N : number of time steps
    int T : time to maturity
    double inityield : initial guess for Newton-Raphson method
    [out] void
    **********************************************************************************/
    void BlackDermanToy::buildBDT(vector<double> yield_curve, double vol, int N, double
    T, double inityield)
    {
    double U[20] = {0.0}; // median of the (lognormal) distribution for
    // r at time t
    double dt = 0.0; // time step
    double P[20] = {0.0}; // bond prices
    double R[20] = {0.0}; // discount factors
    const double epsilon = 0.001; // error tolerance in numerical search
    double error = 0.0; // error between model and target values
    double sum1 = 0.0; // sum of first derivatives
    double sum2 = 0.0; // sum of second derivatives
    double alpha1 = 0.05; // parameter to calibrate U(i)
    double alpha2 = 0.0; // updates alpha1 in numerical search
    int i,j;
    // precompute constants – assume 1 year time steps
    dt = 1;
    // initialize yield curve
    for (i = 1; i <= N; i++)
    {
    R[i] = yield_curve[i-1];
    P[i] = 1/(pow((1 + R[i]*dt),i*dt));
    }
    // initialize first node
    Q[0][0] = 1;
    P[0] = 1;
    U[0] = yield_curve[0];
    r[0][0] = yield_curve[0];
    d[0][0] = 1/(1 + r[0][0]*dt)
    // evolve the tree for the short rate
    for (i = 1; i <= N; i++)
    {
    // update pure security prices at time i
    Q[i][-i] = 0.5*Q[i-1][-i+1]*d[i-1][-i+1];
    Q[i][i] = 0.5*Q[i-1][i-1]*d[i-1][i-1];
    for (j = -i+2; j <= i-2; j += 2)
    {
    Q[i][j] = 0.5*Q[i-1][j-1]*d[i-1][j-1] + 0.5*Q[i-1][j+1]*d[i-1][j+1];
    }
    // use numerical search to solve for U[i]
    // Newton-Raphson method
    alpha1 = inityield;
    do
    {
    sum1 = 0;
    sum2 = 0;
    for (j = -i; j <= i; j += 2)
    {
    sum1 += Q[i][j]*(1/(1 + alpha1*exp(vol*j*sqrt(dt))*dt));
    sum2 += Q[i][j]*(pow((1+ alpha1*exp(vol*j*sqrt(dt))*dt),-
    2)*exp(vol*j*sqrt(dt))*dt);
    }
    alpha2 = alpha1 – (sum1 – P[i+1])/(-sum2);
    error = alpha2 – alpha1;
    alpha1 = alpha2;
    }
    while (error > epsilon);
    U[i] = alpha1;
    // set r[.] and d[.]
    for (j = -i; j <= i; j+= 2)
    {
    r[i][j] = U[i]*exp(vol*j*sqrt(dt));
    d[i][j] = 1/(1 + r[i][j]*dt);
    }
    }
    }

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    svp

  3. #3
    Invité
    Invité(e)
    Par défaut Re: aide pour un programme a compiler
    Citation Envoyé par letombeur
    slt j'essaie de compilier ca mais ca ne marche pas .. qu'un pour m'aider ? merci
    Qu'est ce qui ne marche pas? On est peut etre hot, mais on est pas devin

    Et oublie pas d'utiliser la balise code.

  4. #4
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Au pif, je dirais, as-tu inclus la librairie mathématique dédiée (math.h je crois).

    Enfin, renseigns toi sur le header contenant exp(), pow() et autres.

    Mais effectivement, le message du compilateur est indispensable.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    http://c.developpez.com/faq/cpp/?pag...ALITE_probleme

    Et merci de penser aux balises CODE à l'avenir, ça rend les morceaux de code beaucoup plus lisibles.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut log de compilation
    tt d'abord il faut savoir que je suis un total noob .

    voilà je crée un projet windows application sous Dec-C++. De je colle dans un fichier source le code que je vous est présenté. Je compile et j'ai le log suivant :

    [Compilateur: Default compiler
    Building Makefile: "C:\Dev-Cpp\Makefile.win"
    Exécution de make...
    make.exe -f "C:\Dev-Cpp\Makefile.win" all
    g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

    g++.exe -c SansNom2.cpp -o SansNom2.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

    SansNom2.cpp:9: error: `BlackDermanToy' has not been declared
    SansNom2.cpp:9: error: variable or field `buildBDT' declared void
    SansNom2.cpp:9: error: `vector' was not declared in this scope
    SansNom2.cpp:9: error: expected primary-expression before "double"
    SansNom2.cpp:9: error: expected primary-expression before "double"
    SansNom2.cpp:9: error: expected primary-expression before "int"
    SansNom2.cpp:9: error: expected primary-expression before "double"
    SansNom2.cpp:10: error: expected primary-expression before "double"
    SansNom2.cpp:11: error: initializer expression list treated as compound expression
    SansNom2.cpp:11: error: expected `,' or `;' before '{' token
    SansNom2.cpp:61: error: stray '\150' in program
    SansNom2.cpp:61: error: stray '\150' in program
    SansNom2.cpp:62: error: stray '\150' in program

    make.exe: *** [SansNom2.o] Error 1

    Exécution terminée
    ]

    je suis alors comme un c** devant mon ecran car je ne sais pas comment faire.
    ps : le code est tire d'un livre donc il est a priori juste. mais j'arrive pas a compiler ca pour voir le resultat.
    merci.

  7. #7
    Membre actif Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Points : 224
    Points
    224
    Par défaut
    alors come çà sans voir le reste du code:
    ->'BlackDermanToy' est une classe/structure ou un espace de nom qui n'a pas encore été déclaré
    ->#include <vector>
    using namespace std;
    Ah oui: le reste des erreurs est probablement liée aux deux premières erreurs

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    tres bien amaury donc quels changements je dois apporter exactement ( lignes de codes) ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Le code que tu nous donne est incomplet.

    Guess: L'interface de la classe ou namespace BlackDermanToy doit etre dans un header, il suffirait que tu l'include avant l'implementation de la methode BlackDermanToy::buildBDT.

    Btw, juste a titre de commentaire personnel, je ne crois pas que copier du code de cette facon soit une bonne facon d'apprendre. Peut-etre devrais-tu te consacrer a un example simple, et batir autour de celui-ci pour apprendre a mesure.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/05/2013, 13h28
  2. Réponses: 13
    Dernier message: 26/10/2006, 21h02
  3. Réponses: 8
    Dernier message: 23/08/2006, 18h40
  4. Besoin d'aide pour contourner une internal compiler error
    Par Laurent Gomila dans le forum C++
    Réponses: 18
    Dernier message: 27/06/2006, 22h09
  5. [Free Pascal] Besoin d'aide pour un programme
    Par ricomix dans le forum Free Pascal
    Réponses: 3
    Dernier message: 04/06/2006, 17h01

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