[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 370

 

Boa tarde!

Você pode me dar uma dica, por favor.....

Indic_mas[]//main array

Indic_mas_copi[]//array to which the main array is copied.

n //número de elementos em Indic_mas_copi[]

1. A entrada Indic_mas_copi[n]=0 significa que zeramos todos os elementos da matriz?

2. Após realizar determinadas operações, a matriz Indic_mas_copi[] alterou os valores de alguns elementos,

A próxima iteração repete a cópia de Indic_mas[] em Indic_mas_copi[].

Será que Indic_mas_copi[] precisa ser zerado (ou vazio) antes desta cópia

ou os elementos Indic_mas[] substituem automaticamente os elementos anteriores Indic_mas_copi[] ?

 
LOA:

Boa tarde!

Você pode me dar uma dica, por favor.....

Indic_mas[]//main array

Indic_mas_copi[]//array to which the main array is copied.

n //número de elementos em Indic_mas_copi[]

1. A entrada Indic_mas_copi[n]=0 significa que zeramos todos os elementos da matriz?

2. Após realizar determinadas operações, a matriz Indic_mas_copi[] alterou os valores de alguns elementos,

A próxima iteração repete a cópia de Indic_mas[] em Indic_mas_copi[].

Será que Indic_mas_copi[] precisa ser zerado (ou vazio) antes desta cópia

ou os elementos Indic_mas[] substituem automaticamente os elementos anteriores Indic_mas_copi[] ?


1. Se n é o número de elementos em Indic_mas_copi[], então escrever Indic_mas_copi[n] não é correto porque você está indo para fora da matriz nesta entrada. Não esqueça que a numeração das células da matriz começa a partir de zero células. Portanto, o número da última célula da matriz que você pode endereçar é n-1

2. eles serão substituídos. Verifique isto com o roteiro.

 
drknn:


1. Se n é o número de elementos em Indic_mas_copi[], então escrever Indic_mas_copi[n] não é correto porque você está indo para fora da matriz nesta entrada. Não esqueça que a numeração das células da matriz começa a partir de zero células. É por isso que o número da última célula da matriz a ser endereçada é n-1.

2. Haverá substituições. Consulte-o com o roteiro.


Muito obrigado, Vladimir!

Então para zerar os elementos da matriz você precisa do seguinte?

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


Muito obrigado, Vladimir!

Então para zerar os elementos da matriz você precisa do seguinte?


Não - é muito complicado. Há uma maneira mais simples.

int ArrayInitialize( duplo &array[], valor duplo)
Define todos os elementos de uma matriz numérica com o mesmo valor. Retorna o número de elementos inicializados.

Especifique o nome da matriz entre parênteses e coloque zero como o segundo parâmetro. Isto fará com que todos os elementos da matriz sejam zerados.

 
LOA:


Muito obrigado, Vladimir!

Então para zerar os elementos da matriz você precisa do seguinte?

ArrayInitialize(Array_Name,0);
 
О... Vladimir me venceu... :)
 
artmedia70:
ArrayInitialize(Array_Name,0);

Isto é melhor: https://docs.mql4.com/ru/array/ArrayInitialize - há um exemplo concreto de código
 
drknn:


Não - isto é muito complicado. Há uma maneira mais simples.

int ArrayInitialize( duplo &array[], valor duplo)
Define todos os elementos de uma matriz numérica com o mesmo valor. Retorna o número de elementos inicializados.

Especifique o nome da matriz entre parênteses, e coloque zero como segundo parâmetro. Como resultado, todos os elementos da matriz serão zerados.


Obrigado. É realmente mais fácil assim.

Então o laço pode ser usado em uma situação em que precisamos zerar alguns dos elementos?

Ou, digamos, através de um único elemento.

 
LOA:

Boa tarde!

Você pode me dar uma dica, por favor.....

Indic_mas[]//main array

Indic_mas_copi[]//array to which the main array is copied.

n //número de elementos em Indic_mas_copi[]

1. A entrada Indic_mas_copi[n]=0 significa que zeramos todos os elementos da matriz?

2. Após realizar determinadas operações, a matriz Indic_mas_copi[] alterou os valores de alguns elementos,

A próxima iteração repete a cópia de Indic_mas[] em Indic_mas_copi[].

Será que Indic_mas_copi[] precisa ser zerado (ou vazio) antes desta cópia

ou os elementos Indic_mas[] substituem automaticamente os elementos anteriores Indic_mas_copi[] ?

Não, não é preciso. Todos os elementos do Indic_mas_copi[] serão substituídos por aqueles copiados da matriz principal do Indic_mas[].
 
LOA:


Obrigado. É realmente mais simples assim.

Então o loop pode ser usado em uma situação em que você precisa zerar alguns dos elementos?

Ou, digamos, através de um elemento.


Um laço pode ser usado quando se quer zerar ou reinicializar alguns elementos... Um loop, por outro lado, passa por todos eles, um a um. Portanto, dentro do loop, podemos introduzir uma regra que classificará as células necessárias da matriz. Por exemplo, só precisamos separar os números negativos e dobrá-los. Portanto, escreveremos o seguinte no laço

Se o valor na célula atual da matriz for menor que zero, então ele toma o valor dessa célula da matriz multiplicado por dois. Caso contrário, continuar

P.S.

if(massiv[i]<0){
  massiv[i]=massiv[i]*2;
}
else{
  continue;
}
Embora do ponto de vista do processador, se soubermos antes exatamente o que precisamos duplicar, é melhor aplicar a adição do que a multiplicação - a adição levará menos tempo de CPU.
Razão: