Boucle for

louis230586 Messages postés 4 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 11 juin 2009 - 11 juin 2009 à 16:49
redoualinho Messages postés 6 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 27 juin 2009 - 27 juin 2009 à 14:30
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

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
11 juin 2009 à 17:27
1.#INF ?
C'est pas du C/C++ ça !!!
Ca ressemble à Excel ou VB, non ?
0
louis230586 Messages postés 4 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 11 juin 2009
11 juin 2009 à 17:33
Non je code bien en C++.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
11 juin 2009 à 17:45
faudrait mettre ton code parce que comme ça...
0
louis230586 Messages postés 4 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 11 juin 2009
11 juin 2009 à 17:50
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;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
louis230586 Messages postés 4 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 11 juin 2009
11 juin 2009 à 18:30
probleme resolum, cela provenait du rand qui renvoyait 0 d'ou un probleme avec le ln apres.
Merci.
0
redoualinho Messages postés 6 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 27 juin 2009
27 juin 2009 à 14:30
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
0
Rejoignez-nous