[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 184

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

Se emette degli zeri, è meglio allegare del codice piuttosto che spiegarlo con le dita.

Se viene dichiarato un array aperto, è consigliabile fare ArrayResize, o dichiarare subito una dimensione maggiore.

 
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);
  }

Lo script è puramente per divertimento, ma si può anche catturare Alert(GetLastError()); ottenendo

ERRARE_ARRAY_INDEX_OUT_OF_RANGE4002L'indice dell'array è fuori portata
 
splxgf:

Se emette degli zeri, è meglio allegare del codice piuttosto che spiegarlo con le dita.

Se viene dichiarato un array aperto, è consigliabile fare ArrayResize, o dichiarare subito una dimensione maggiore.

Ho già allegato il codice nel primo post. C'è solo bisogno di aggiungere un paio di linee corrette da qualche parte per formare l'array. Questa era esattamente la domanda principale).

Infatti, penso che dovrebbe essere qualcosa del genere da qualche parte:

ArrayResize(Mas,n);

Mas[n]={diff};

n è la nuova dimensionalità, i valori diff delle differenze risultanti.

Ma non funziona così, stampa la differenza 0,00000. Ho già provato a inserire la differenza nel ciclo, dietro il ciclo e anche nella condizione.

In breve, sono in un torpore).

Se sapete come scriverlo, ve ne sarò molto grato.

 
splxgf:

Lo script è puramente per divertimento, ma si può anche catturare Alert(GetLastError()); ottenendo

ERRARE_ARRAY_INDEX_OUT_OF_RANGE4002L'indice dell'array è fuori portata

Bene, si scopre che si specifica esplicitamente sia la dimensione che il valore dell'array nel codice. È proprio questo che ho capito nell'articolo.

Ma in qualche modo non riesco a farlo con il mio esempio.(.

 
NickXXX:

specificare esplicitamente sia la dimensione che il valore dell'array nel codice

Non ci sono altre opzioni.

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

Gli elementi non vengono creati quando vi si accede.

 
splxgf:

Non ci sono altre opzioni.

Gli elementi non vengono creati quando vi si accede.

Ok, guarda. Ho capito bene?

Nel vostro esempio, state creando un array unidimensionale che consiste in un singolo valore di 89.

A proposito, per dimensionalità intendevo il numero di elementi in un array unidimensionale. Ho pensato che si può cambiare nel corso del programma. Dopo tutto, non è per niente che inizialmente specifichiamo il nostro array non esplicitamente. Per esempio:

double Mas[]; //inizializzare un array unidimensionale

int n=0; //sarà utile per il numero di elementi dell'array

Inoltre, come nel mio esempio, facciamo il seguente ciclo

per(...)

{

if(...)//la condizione che ci interessa

{

n++;// conta quante volte ha funzionato

diff=... valori che ci interessano

}

}

e poi da qualche altra parte riempiamo il nostro array unidimensionale Mas[n] con valori diff, dove n è il numero di elementi

Ho pensato che è abbastanza normale e si può fare così... O lo è?

 

Prima di for, aggiungere un ArrayResize al numero di elementi richiesto

Per esempio, il punto

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

è orientato sul numero di barre del grafico nella finestra corrente, oppure si può semplicemente specificare qualsiasi numero vicino all'astronomico al posto di iBars.

L'array è inizialmente creato vuoto, prima di accedervi, è necessario specificare quanti elementi si vogliono memorizzare in esso. Pubblica il codice completo, sarà più facile da navigare.

 
splxgf:

Prima di for, aggiungere un ArrayResize al numero di elementi richiesto

Per esempio, il punto

è orientato sul numero di barre del grafico nella finestra corrente, o si può semplicemente specificare qualsiasi numero vicino all'astronomico al posto di iBars.

Ma prima per non conoscere il numero di elementi, lo sapremo solo quando calcoleremo il numero di condizioni if. Ho provato a mettere ArrayResize dopo for, esce 0 come elementi.
 

Nell'esempio mostro che non si può usare un array che non ha un numero di elementi segnato.

Le prime due chiamate causano un errore e restituiscono 0.

Per sbarazzarsi degli scarafaggi, basta scrivere

double mas[999999];

Se funziona, occupatevi degli scarafaggi.

 
splxgf:

Nell'esempio mostro che non si può usare un array che non ha un numero di elementi segnato.

Le prime due chiamate causano un errore e restituiscono 0.

Per sbarazzarsi degli scarafaggi, basta scrivere

Se funziona, occupatevi degli scarafaggi.

Non c'è bisogno di specificare il numero di elementi dall'inizio, è adatta anche la costruzione doppia Mas[].