Bonjour,

Je suis débutant en c++ et j'essaie de compiler le programme ci dessous mais j obtiens le message d erreur suivant 4 fois:invalid types 'double[int]' for array subscript. Je ne vois pas à quoi cela correspond....
Merci d'avance!!

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
84
85
86
87
88
89
90
91
92
93
94
#include "VA.cpp"
#include <vector> 
#include <algorithm> //pour utiliser la fonction min()
using namespace std;
 
class CDO
{
public:	
	CDO (const int a, const int N, const double c, const double k1,const double k2);
	~CDO();
	void getELK1K2();
	double price();
	double* ELK1K2;
    double* TRESHOLD, BONDS;
private:
	int years, contracts;//nombre d'annèes de vie du cdo (avec payment trimestriel) et nombre de contracts sous-jacents	
	double correl,K1,K2;//Corrélation et pourcentages de la tranche
    ;
};
 
CDO::CDO (const int a,const  int N, const double c,const double k1,const  double k2)
	: years(a),contracts(N), correl(c),K1(k1),K2(k2){
	double* ELK1K2=new double[4*years+1];
	double* TRESHOLD=new double[4*years];
	double* BONDS=new double[4*years];
 
	for (int i=0;i<4*years;i++)
	{ TRESHOLD[i]=i/100.;
	  BONDS[i]=1/pow(1.03,0.25*(1+i));	}
 
	}
 
 // ~ CDO()	 {
	 // delete [] ELK1K2;
	 // delete [] TRESHOLD;
	 // delete [] BONDS; }
 
void CDO::getELK1K2()
{
		const double n=(years*4);
		const double MC=100000;
		int j;
		ELK1K2[0]=0.;
		Norm M(0,1);//facteur de marché commun
		double MM,L;
		L=0.;
		vector<Norm> NGauss(contracts);//vecteur de loi gaussiennes modélisant les rendements des titres
		vector <double> Gauss(contracts);
		for (int i=0;i<n;i++)
		{
		for (int ii=0;i<MC;ii++)
		{MM=M();
		j=0;
		for(int iii=0;iii<contracts;iii++)
		{Gauss[iii]=NGauss[iii]()*sqrt(1-correl*correl)+correl*MM;
		if (Gauss[iii]<TRESHOLD[i]) j=j+1;}
		L=L+max(min(j/n,K2)-K1,0.)/(K2-K1);
		}
		ELK1K2[i+1]=L/MC;
		}
}
 
double CDO::price()
{   const double n=(years*4);
	double premium, protection,s,price; //les deux jambes du CDO, le taux s et le pix de la tranche
	double denom;
    premium=0.;
	protection=0.;	
	denom=0.;
	for (int i=0;i<n;i++)
	{
	protection=protection+(ELK1K2[i+1]-ELK1K2[i])*BONDS[i];
	denom=denom+0,25.*(1-ELK1K2[i+1])*BONDS[i];
	}
	s=protection/denom;
 
	for (int i=0;i<n;i++)
	{premium=premium+0,25.*s*(1-ELK1K2[i+1])*BONDS[i];}
 
	price=protection-premium;
	return price;
	}
 
	int main(){
 
 
    CDO AIG (1, 80,0.09,0.03,0.09);
	AIG.getELK1K2();
	AIG.price();
 
 
 
	return 1;
}