Limpar um conjunto de elementos definidos - página 20

 
Peter, você tem um estilo de programação único. Em resumo, você programa apesar de, não por causa de.
 
Реter Konow:

Certo. Mas como sabemos que os algoritmos fornecidos não deixam nenhum espaço em branco? O checksum não o prova. Nem o número de elementos. Afinal, a função conta os elementos que estavam lá antes do redimensionamento da matriz.

No entanto, você acertou uma implementação, consertando um bug em arrays estáticos.

int arrayFilter2(int &Test[],const int value)
  {
   int s,_s=s=ArraySize(Test);
   bool result=false;

   for(int i=0,j=0; i<_s; i++,j++)
     {
      if(Test[i]==value)// || Test[i]==NULL)
        {
         result=true;
         s--;
         j--;
         continue;
        }
      if(result)
         Test[j]=Test[i];
     }

   if(s<_s)
      if(ArrayResize(Test,s))
         if(ArraySize(Test)==_s)
            ArrayFill(Test,s,_s-s,NULL);

   return s;
  }

Agora, se for estático, limpamos a cauda.

Arquivos anexados:
 
Реter Konow:

Certo. Mas como sabemos que os algoritmos fornecidos não deixam nenhum espaço em branco? O checksum não o prova. Nem o número de elementos. Afinal, a função conta os elementos que estavam lá antes do redimensionamento da matriz.

Você deve olhar para as últimas versões do código, não para a primeira.
Esse checksum, que leva em conta a seqüência de elementos da matriz, tem sido usado por muito tempo:

double ControlSumm(int &a[]) 
  {
   double sum=0;
   for(int i=0; i<ArraySize(a); i++) sum+=(double)a[i]/(i+1);
   return sum;
  }
 

corrigiu um erro no 3º teste e ajustou minha função

Arquivos anexados:
 
Nikolai Semko:

Você olharia para as últimas versões do código, não para a primeira.
Há muito tempo não se usa tal soma de verificação, que leva em conta a seqüência de elementos da matriz:

Você precisa de uma prova demonstrável de exatidão. Uma fila de 20 números é suficiente para isso. Se o algoritmo passar neste teste, ele pode ser testado quanto à velocidade.

O teste realizado é um teste cego.

Talvez todos os algoritmos funcionem corretamente, e talvez os líderes caiam fora do lugar.

 
Реter Konow:

Você precisa de uma prova demonstrável de exatidão. Uma fila de 20 números é suficiente para isso. Se o algoritmo passar nesta verificação, ele pode ser testado quanto à velocidade.

O objetivo do checksum não é garantir que as matrizes sejam as mesmas se o checksum for o mesmo, mas garantir que elas sejam diferentes se o checksum for diferente.

 
Nikolai Semko:

O objetivo do checksum não é garantir que as matrizes sejam as mesmas se o checksum for o mesmo, mas garantir que elas sejam diferentes se o checksum for diferente.

Nikolai, não é difícil usar meu exemplo e verificar os algoritmos com um conjunto de 20 elementos, não é mesmo? Apenas o resultado?

 
Реter Konow:

Você precisa de uma prova demonstrável de exatidão. Uma fila de 20 números é suficiente para isso. Se o algoritmo passar neste teste, ele pode ser testado quanto à velocidade.

O teste realizado é um teste cego.

Talvez todos os algoritmos funcionem corretamente, e talvez os líderes deixem seus lugares.

Se você não confia no checksum, qual é o problema?

 
Реter Konow:

Nikolai, não é difícil usar meu exemplo e verificar os algoritmos com um conjunto de 20 elementos, não é mesmo? Basta exibi-la nos resultados?

Com um conjunto de 20 elementos, é impossível avaliar a velocidade de uma função. E esse é o objetivo deste fio condutor.

 
Nikolai Semko:

Com um conjunto de 20 elementos, é impossível estimar a velocidade da função. E este é o objetivo deste ramo.

Há também uma exigência para o algoritmo - a colocação correta de elementos dentro da matriz, após a remoção de elementos desnecessários. Esta verificação deve ter sido realizada primeiro. Depois, há uma verificação de velocidade.