[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 184

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

Se ele produz zeros, é melhor anexar código em vez de explicá-lo em seus dedos.

Se uma matriz aberta for declarada, é aconselhável fazer o ArrayResize, ou declarar uma dimensão maior imediatamente.

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

O roteiro é puramente por diversão, mas você também pode pegar Alert(GetLastError()); obtendo

ERR_ARRAY_INDEX_OUT_OF_RANGE4002O índice da matriz está fora de alcance
 
splxgf:

Se ele produz zeros, é melhor anexar código em vez de explicá-lo em seus dedos.

Se uma matriz aberta for declarada, é aconselhável fazer o ArrayResize, ou declarar uma dimensão maior imediatamente.

Eu já anexei o código no primeiro post. Basta adicionar algumas linhas corretas em algum lugar para formar a matriz. Essa foi exatamente a pergunta principal).

Na verdade, eu acho que deveria ser algo assim em algum lugar:

ArrayResize(Mas,n);

Mas[n]={diff};

n é a nova dimensionalidade, valores difusos das diferenças resultantes.

Mas não funciona dessa forma, imprime a diferença de 0,00000. Eu já tentei inserir a diferença no laço, atrás do laço e até mesmo na condição.

Em resumo, estou em um estupor).

Se você souber escrevê-lo, ficarei muito grato a você.

 
splxgf:

O roteiro é puramente por diversão, mas você também pode pegar Alert(GetLastError()); obtendo

ERR_ARRAY_INDEX_OUT_OF_RANGE4002O índice da matriz está fora de alcance

Bem, acontece que você especifica explicitamente tanto o tamanho da matriz quanto o valor no código. É isto mesmo que entendi no artigo.

Mas de alguma forma eu não posso fazê-lo com meu exemplo(.

 
NickXXX:

especificar explicitamente tanto a dimensão quanto o valor da matriz no código

Não há outras opções.

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

Os elementos não são criados quando se acessa a eles.

 
splxgf:

Não há outras opções.

Os elementos não são criados quando se acessa a eles.

Certo, veja. Eu entendo bem?

Em seu exemplo, você está criando uma matriz unidimensional que consiste em um único valor de 89.

A propósito, por dimensionalidade quis dizer o número de elementos em uma matriz unidimensional. Pensei que você pudesse mudar isso ao longo do programa. Afinal de contas, não é por nada que inicialmente especificamos nossa matriz não explicitamente. Isto é, por exemplo:

Mas[] duplo Mas[]; //inicializar matriz unidimensional

int n=0; // será útil para o número de elementos da matriz

Além disso, como no meu exemplo, fazemos o seguinte loop

para(...)

{

se(...)// a condição em que estamos interessados

{

n++;// contar quantas vezes funcionou

diff=... valores nos quais estamos interessados

}

}

e depois em algum outro lugar enchemos nossa matriz unidimensional Mas[n] com valores difusos, sendo n o número de elementos

Pensei que era bastante normal e pode ser feito dessa maneira. Ou será?

 

Antes de for, adicione um ArrayResize ao número de elementos necessários

Por exemplo, o ponto

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

é orientado no número de barras no gráfico da janela atual, ou você pode simplesmente especificar qualquer número próximo ao número astronômico em vez de iBars.

A matriz é inicialmente criada vazia, antes de acessá-la, você precisa especificar quantos elementos você deseja armazenar nela. Afixar o código completo, será mais fácil de navegar.

 
splxgf:

Antes de for, adicione um ArrayResize ao número de elementos necessários

Por exemplo, o ponto

é orientado sobre o número de barras do gráfico na janela atual, ou você pode simplesmente especificar qualquer número próximo ao número astronômico em vez de iBars.

Mas antes, por não sabermos o número de elementos, só o saberemos quando calcularmos o número de se condição. Tentei colocar o ArrayResize depois para, ele sai 0 como elementos.
 

No exemplo, mostro que não se pode usar uma matriz que não tenha uma série de elementos marcados.

As duas primeiras chamadas causam um erro e retornam 0.

Para se livrar das baratas que você tem.

double mas[999999];

Se funcionar, lide com as baratas.

 
splxgf:

No exemplo, mostro que não se pode usar uma matriz que não tenha uma série de elementos marcados.

As duas primeiras chamadas causam um erro e retornam 0.

Para se livrar das baratas, basta escrever

Se funcionar, lide com as baratas.

Não é necessário especificar o número de elementos desde o início, a construção em Mas[] duplo Mas[] também é adequada.

Razão: