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

 

Buon pomeriggio!

Puoi darmi un suggerimento, per favore.....

Indic_mas[]//array principale

Indic_mas_copi[]//array in cui viene copiato l'array principale.

n //numero di elementi in Indic_mas_copi[]

1. la voce Indic_mas_copi[n]=0 significa che abbiamo azzerato tutti gli elementi dell'array?

2. Dopo aver eseguito certe operazioni, l'array Indic_mas_copi[] ha cambiato i valori di alcuni elementi,

L'iterazione successiva ripete la copia di Indic_mas[] in Indic_mas_copi[].

Indic_mas_copi[] deve essere azzerato (o vuoto) prima di questa copia

o gli elementi di Indic_mas[] sostituiranno automaticamente i precedenti elementi di Indic_mas_copi[]?

 
LOA:

Buon pomeriggio!

Puoi darmi un suggerimento, per favore.....

Indic_mas[]//array principale

Indic_mas_copi[]//array in cui viene copiato l'array principale.

n //numero di elementi in Indic_mas_copi[]

1. la voce Indic_mas_copi[n]=0 significa che abbiamo azzerato tutti gli elementi dell'array?

2. Dopo aver eseguito certe operazioni, l'array Indic_mas_copi[] ha cambiato i valori di alcuni elementi,

L'iterazione successiva ripete la copia di Indic_mas[] in Indic_mas_copi[].

Indic_mas_copi[] deve essere azzerato (o vuoto) prima di questa copia

o gli elementi Indic_mas[] sostituiranno automaticamente i precedenti Indic_mas_copi[]?


1. Se n è il numero di elementi in Indic_mas_copi[], allora scrivere Indic_mas_copi[n] non è corretto perché state andando fuori dall'array in questa voce. Non dimenticate che la numerazione delle celle dell'array comincia da zero celle. Pertanto, il numero dell'ultima cella dell'array a cui ci si può rivolgere è n-1

2. sarà sostituito. Controllate questo con lo script.

 
drknn:


1. Se n è il numero di elementi in Indic_mas_copi[], allora scrivere Indic_mas_copi[n] non è corretto perché state andando fuori dall'array in questa voce. Non dimenticate che la numerazione delle celle dell'array parte da zero celle. Ecco perché il numero dell'ultima cella dell'array da indirizzare è n-1.

2. ci saranno sostituzioni. Controllate con lo script.


Grazie mille, Vladimir!

Allora per azzerare gli elementi dell'array avete bisogno di quanto segue?

double i;
for (i=n-1;i>=0;i--)Indic_mas_copi[i]=0; 
 
LOA:


Grazie mille, Vladimir!

Allora per azzerare gli elementi dell'array avete bisogno di quanto segue?


No - è troppo complicato. C'è un modo più semplice.

int ArrayInitialize( doppio &array[], doppio valore)
Imposta tutti gli elementi di una matrice numerica allo stesso valore. Restituisce il numero di elementi inizializzati.

Specificare il nome dell'array tra parentesi e mettere zero come secondo parametro. Questo causerà l'azzeramento di tutti gli elementi dell'array.

 
LOA:


Grazie mille, Vladimir!

Allora per azzerare gli elementi dell'array avete bisogno di quanto segue?

ArrayInitialize(Array_Name,0);
 
О... Vladimir mi ha battuto sul tempo... :)
 
artmedia70:
ArrayInitialize(Array_Name,0);

Questo è meglio: https://docs.mql4.com/ru/array/ArrayInitialize - c'è un esempio concreto di codice
 
drknn:


No - questo è troppo complicato. C'è un modo più semplice.

int ArrayInitialize( doppio &array[], doppio valore)
Imposta tutti gli elementi di una matrice numerica allo stesso valore. Restituisce il numero di elementi inizializzati.

Specificare il nome dell'array tra parentesi, e mettere zero come secondo parametro. Di conseguenza, tutti gli elementi dell'array saranno azzerati.


Grazie. È davvero più facile così.

Allora il ciclo può essere usato in una situazione in cui abbiamo bisogno di azzerare alcuni elementi?

O, diciamo, attraverso un singolo elemento.

 
LOA:

Buon pomeriggio!

Puoi darmi un suggerimento, per favore.....

Indic_mas[]//array principale

Indic_mas_copi[]//array in cui viene copiato l'array principale.

n //numero di elementi in Indic_mas_copi[]

1. la voce Indic_mas_copi[n]=0 significa che abbiamo azzerato tutti gli elementi dell'array?

2. Dopo aver eseguito certe operazioni, l'array Indic_mas_copi[] ha cambiato i valori di alcuni elementi,

L'iterazione successiva ripete la copia di Indic_mas[] in Indic_mas_copi[].

Indic_mas_copi[] deve essere azzerato (o vuoto) prima di questa copia

o gli elementi Indic_mas[] sostituiranno automaticamente i precedenti Indic_mas_copi[] ?

No, non è necessario. Tutti gli elementi di Indic_mas_copi[] saranno sostituiti da quelli copiati dall'array principale Indic_mas[]
 
LOA:


Grazie. È davvero più semplice in questo modo.

Allora il ciclo può essere usato in una situazione in cui è necessario azzerare alcuni elementi?

O, diciamo, attraverso un elemento.


Un ciclo può essere usato quando si vuole azzerare o reinizializzare alcuni elementi... Un ciclo, invece, li attraversa tutti uno per uno. Pertanto, all'interno del ciclo possiamo introdurre una regola che ordinerà le celle richieste dell'array. Per esempio, abbiamo solo bisogno di ordinare i numeri negativi e raddoppiarli. Perciò scriveremo il seguente nel ciclo

Se il valore nella cella corrente della matrice è inferiore a zero, allora prende il valore di quella cella della matrice moltiplicato per due. Altrimenti, continuare

P.S.

if(massiv[i]<0){
  massiv[i]=massiv[i]*2;
}
else{
  continue;
}
Anche se dal punto di vista del processore, se sappiamo in anticipo esattamente cosa dobbiamo raddoppiare, è meglio applicare l'addizione piuttosto che la moltiplicazione - l'addizione richiederà meno tempo alla CPU.