[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 184

 
   double Mas[];//массив куда надо заносить данные

S'il produit des zéros, il est préférable de joindre un code plutôt que de l'expliquer sur vos doigts.

Si un tableau ouvert est déclaré, il est conseillé de faire ArrayResize, ou de déclarer une plus grande dimension tout de suite.

 
double mas[];
int start()
  {
  double v1=mas[1];
  mas[1]=89;
  double v2=mas[1];
  ArrayResize(mas,iBars(NULL,0));
  double v3=mas[1];
  mas[1]=89;
  double v4=mas[1];
  Alert(v1,"-",v2,"-",v3,"-",v4);
  return(0);
  }

Le script est purement pour le plaisir, mais vous pouvez aussi attraper Alert(GetLastError()) ; getting

ERR_ARRAY_INDEX_OUT_OF_RANGE4002L'index du tableau est hors de portée
 
splxgf:

S'il produit des zéros, il est préférable de joindre un code plutôt que de l'expliquer sur vos doigts.

Si un tableau ouvert est déclaré, il est conseillé de faire ArrayResize, ou de déclarer immédiatement une dimension supérieure.

J'ai déjà joint le code dans le premier message. Il faut juste ajouter quelques lignes correctes quelque part pour former le tableau. C'était exactement la question principale).

En fait, je pense que ça devrait être quelque chose comme ça quelque part :

ArrayResize(Mas,n) ;

Mas[n]={diff} ;

n est la nouvelle dimensionnalité, les valeurs diff des différences résultantes.

Mais ça ne marche pas comme ça, ça imprime la différence 0.00000. J'ai déjà essayé d'insérer la différence dans la boucle, derrière la boucle et même dans la condition.

En bref, je suis dans la stupeur).

Si vous savez comment l'écrire, je vous en serai très reconnaissant.

 
splxgf:

Le script est purement pour le plaisir, mais vous pouvez également attraper Alert(GetLastError()) ; getting

ERR_ARRAY_INDEX_OUT_OF_RANGE4002L'index du tableau est hors de portée

Eh bien, il s'avère que vous spécifiez explicitement la taille et la valeur du tableau dans le code. C'est justement ce que j'ai compris dans l'article.

Mais je n'arrive pas à le faire avec mon exemple.(.

 
NickXXX:

spécifier explicitement à la fois la dimension et la valeur du tableau dans le code

Il n'y a pas d'autres options.

  double v1=mas[1];
  mas[1]=89;
  Alert(GetLastError());
  double v2=mas[1];
  Alert(GetLastError());
  ArrayResize(mas,iBars(NULL,0));

Les éléments ne sont pas créés lorsque vous y accédez.

 
splxgf:

Il n'y a pas d'autres options.

Les éléments ne sont pas créés lorsqu'on y accède.

Ok, écoutez. Est-ce que j'ai bien compris ?

Dans votre exemple, vous créez un tableau unidimensionnel composé d'une seule valeur, 89.

À propos, par dimensionnalité, j'entends le nombre d'éléments d'un tableau unidimensionnel. Je pensais que vous pouviez le changer au cours du programme. Après tout, ce n'est pas pour rien que nous spécifions initialement notre tableau de manière non explicite. Par exemple :

double Mas[] ; //initialise un tableau unidimensionnel

int n=0 ; //sera utile pour le nombre d'éléments du tableau

Ensuite, comme dans mon exemple, nous faisons la boucle suivante

pour(...)

{

if(...)//la condition qui nous intéresse

{

n++;// comptez le nombre de fois où cela a fonctionné.

diff=... les valeurs qui nous intéressent

}

}

et ensuite, quelque part ailleurs, nous remplissons notre tableau unidimensionnel Mas[n] avec des valeurs différentes, n étant le nombre d'éléments

Je pensais que c'était tout à fait normal et qu'on pouvait faire comme ça... Ou est-ce le cas ?

 

Avant de, ajoutez un ArrayResize au nombre d'éléments requis

Par exemple, le point

  ArrayResize(mas,iBars(NULL,0));

est orienté sur le nombre de barres dans la fenêtre graphique actuelle, ou vous pouvez simplement spécifier un nombre proche de l'astronomie à la place de iBars.

Le tableau est initialement créé vide, avant d'y accéder, vous devez spécifier le nombre d'éléments que vous souhaitez y stocker. Affichez le code complet, il sera plus facile de naviguer.

 
splxgf:

Avant de, ajoutez un ArrayResize au nombre d'éléments requis

Par exemple, le point

est orienté sur le nombre de barres du graphique dans la fenêtre actuelle, ou vous pouvez simplement spécifier n'importe quel nombre proche de l'astronomie à la place de iBars.

Mais avant car nous ne connaissons pas le nombre d'éléments, nous ne le connaîtrons que lorsque nous calculerons le nombre de condition if. J'ai essayé de mettre ArrayResize après for, il sort 0 comme éléments.
 

Dans l'exemple, je montre que vous ne pouvez pas utiliser un tableau dont le nombre d'éléments n'est pas marqué.

Les deux premiers appels provoquent une erreur et renvoient 0.

Pour se débarrasser des cafards, il suffit d'écrire

double mas[999999];

Si ça marche, occupez-vous des cafards.

 
splxgf:

Dans l'exemple, je montre que vous ne pouvez pas utiliser un tableau dont le nombre d'éléments n'est pas marqué.

Les deux premiers appels provoquent une erreur et renvoient 0.

Pour se débarrasser des cafards, il suffit d'écrire

Si ça marche, occupez-vous des cafards.

Il n'est pas nécessaire de préciser le nombre d'éléments dès le début, la construction en double Mas[] convient également.

Raison: