Boucle for

Signaler
Messages postés
4
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009
-
Messages postés
6
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
27 juin 2009
-
Bonjour,
j ai un probleme avec une boucle for (calcul d une moyenne) : quand je depasse la valeur de 155 iterations, il s affiche automatiquement 1.#INF a l ecran alors que la boucle fonctionne parfaitememt pour les 154 iterations precedentes. Ceci est d ailleurs independants des valeurs que je rentre dans mon programme.
Est-ce que qqn sit d ou cela provient?

Merci par avance.

6 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
1.#INF ?
C'est pas du C/C++ ça !!!
Ca ressemble à Excel ou VB, non ?
Messages postés
4
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009

Non je code bien en C++.
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
faudrait mettre ton code parce que comme ça...
Messages postés
4
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009

Voici le code :

#include "stdafx.h"
#include
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
using namespace std;
double monte_carlo(double , double , double, double, double );
int main()
{
double vol,d,prix,strike,nb_traj;
cout<<"Entrer la valeur du prix actuel"<<endl;
cin>>prix;
cout<<"Entrer la vol"<<endl;
cin>>vol;
cout<<"Entrer la date d'expiration"<<endl;
cin>>d;
cout<<"entrer le strike"<<endl;
cin>>strike;
cout<<"Entrer le nombre d'iterations souhaitees : "<<endl;
cin>>nb_traj;
cout<<monte_carlo(vol,d,prix,strike,nb_traj)<<endl;
return 0;
}
double monte_carlo(double vol, double date_expiration, double prix_actu,double strike,double nb_traj )
{
int compteur=0;
double date=date_expiration/365,call;
float moy;
long double Sum=0.0;
while(compteur<=nb_traj)
{
double u1,u2,z1,w1,s1;
u1=(rand() % 101)/100.0;
u2=(rand() % 101)/100.0;
z1=sqrt(-2*log(u1))*cos(2*3.1415926535897932384*u2);
w1=z1*sqrt(date);
s1=prix_actu*exp((-vol*vol*date*0.5)+vol*w1);
if(s1-strike>0)
{
call=s1-strike;
}
else
{
call=0.0;
}
Sum+=call;
compteur+=1;
}
return Sum/nb_traj;
}
Messages postés
4
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
11 juin 2009

probleme resolum, cela provenait du rand qui renvoyait 0 d'ou un probleme avec le ln apres.
Merci.
Messages postés
6
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
27 juin 2009

je pense que c'est un probleme de typage  pour votre variable !!
si tu utilise des int il fout les changer à des double
j'espere que votre probleme sera resolut