2017-10-13 5 views
3

Je suis en train d'exécuter le code suivant et je reçois l'erreur de type non valide pour j dans la boucle:types non valides pour tableau

for(int i = 0; i < N; i++) //steps 
     { 
     j[i]=0; 
     for (int j = 0; j < Particles; j++) //Particles 
      { 
      u = randnum(0,1); 
      dr = pow(pow(a, 1-alph) + u * (1-alph)/B, 1/(1-alph)); 
      phi[j] = randnum(0,M_PIl); 
      pre_x = x [j]; 
      pre_y = y [j]; 
      x[j] = pre_x + cos(phi[j]) * dr; 
      y[j] = pre_y + sin(phi[j]) * dr; 
      while((sin(A * x[j]) + Delta * sin(C * x[j])/2) * h + H < y[j]) 
       { 
       u = randnum(0,1); 
       dr = pow(pow(a, 1-alph) + u * (1-alph)/B, 1/(1-alph)); 
       phi[j] = randnum(0,M_PIl); 
       x[j] = pre_x + cos(phi[j]) * dr; 
       y[j] = pre_y + sin(phi[j]) * dr; 
       } 
       j[i] = j[i] + cos(phi[j]); 
      } 
       myfile<<j[i]<<endl; //Outputs array to txtFile 
     } 
     myfile.close(); 

J'ai vérifié d'autres questions avec le titre similaire, mais le titre ne correspond pas à à mon cas. déclaration exacte d'erreur est:

invalid types ‘int[int]’ for array subscript 
j[i] = j[i] + cos(phi[j]); 
+1

j est un int. vous ne pouvez pas l'utiliser comme tableau. Vous obtenez une erreur parce que c'est faux. –

+0

Il semble que vous ayez deux choses différentes à la fois nommées 'j' - un tableau (dont la déclaration ne figure pas dans votre code) et un index de boucle. Donnez-leur des noms différents. –

+0

Que déclare 'j' AVANT la boucle externe? Cette information expliquera le message d'erreur. – Peter

Répondre

1

ligne 3 Je vois j[i]=0; qui me laisse supposer j est un tableau déclaré ci-dessus ce que nous voyons ici. Cependant, alors vous fantôme j en utilisant cela comme votre int dans votre boucle for. Vers le bas, vous faites j[i] = j[i] + cos(phi[j]);. Cependant, dans cette portée j n'est pas votre tableau, est un entier de l'itération num de cette boucle.

Renommer le tableau ou l'int dans votre boucle

0

On dirait que vous avez déclaré j comme un tableau. Et aussi dans pour (int j = 0; j < Particules; j ++) vous déclarez un autre j comme entier. à ce point j devient l'entier local j, donc il ne reconnaît pas le tableau précédent j. essayer de renommer le tableau à autre chose ou renommer le for (int j = 0; j < particules; j ++) à for (int k = 0; k < particules; k ++) ou quelque chose de similaire