Borrar una matriz de elementos definidos - página 20

 
Peter, tienes un estilo de programación único. En resumen, se programa a pesar de, no por.
 
Реter Konow:

Sí. Pero, ¿cómo sabemos que los algoritmos proporcionados no dejan espacios en blanco? La suma de comprobación no lo demuestra. Tampoco el número de elementos. Al fin y al cabo, la función cuenta los elementos que había antes de redimensionar el array.

Sin embargo, has dado con una implementación, solucionando un error en las matrices estáticas.

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

Ahora, si es estático, limpiamos la cola.

Archivos adjuntos:
 
Реter Konow:

Sí. Pero, ¿cómo sabemos que los algoritmos proporcionados no dejan espacios en blanco? La suma de comprobación no lo demuestra. Tampoco el número de elementos. Al fin y al cabo, la función cuenta los elementos que había antes de redimensionar el array.

Habría que mirar las últimas versiones del código, no las primeras.
Este tipo de suma de comprobación, que tiene en cuenta la secuencia de elementos de la matriz, se utiliza desde hace mucho tiempo:

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

he corregido un error en la tercera prueba y he ajustado mi función

Archivos adjuntos:
 
Nikolai Semko:

Se mirarían las últimas versiones del código, no las primeras.
Hace mucho tiempo que no se utiliza una suma de comprobación de este tipo, que tiene en cuenta la secuencia de elementos de la matriz:

Necesitas una prueba demostrable de la corrección. Para ello, basta con una fila de 20 números. Si el algoritmo supera esta prueba, se puede comprobar su velocidad.

La prueba realizada es una prueba a ciegas.

Puede que todos los algoritmos funcionen correctamente, y puede que los líderes se descoloquen.

 
Реter Konow:

Necesitas una prueba demostrable de la corrección. Para ello, basta con una fila de 20 números. Si el algoritmo supera esta comprobación, se puede probar su velocidad.

El objetivo de la suma de comprobación no es garantizar que las matrices sean iguales si la suma de comprobación es la misma, sino garantizar que sean diferentes si la suma de comprobación es diferente.

 
Nikolai Semko:

El propósito de la suma de comprobación no es asegurar que las matrices sean iguales si la suma de comprobación es la misma, sino asegurar que sean diferentes si la suma de comprobación es diferente.

Nikolai, no es difícil usar mi ejemplo y comprobar los algoritmos con un array de 20 elementos, ¿verdad? ¿Sólo la salida en los resultados?

 
Реter Konow:

Se necesita una prueba demostrable de la corrección. Para ello, basta con una fila de 20 números. Si el algoritmo supera esta prueba, se puede comprobar su velocidad.

La prueba realizada es una prueba a ciegas.

Tal vez todos los algoritmos funcionen correctamente, y tal vez los líderes abandonen sus puestos.

Si no confías en la suma de comprobación, ¿cuál es el problema?

 
Реter Konow:

Nikolai, no es difícil utilizar mi ejemplo y comprobar los algoritmos con un array de 20 elementos, ¿verdad? ¿Sólo mostrarlo en los resultados?

Con una matriz de 20 elementos es imposible evaluar la velocidad de una función. Y ese es el objetivo de este hilo.

 
Nikolai Semko:

Con una matriz de 20 elementos, es imposible estimar la velocidad de la función. Y este es el objetivo de esta rama.

También hay un requisito para el algoritmo: la colocación correcta de los elementos dentro de la matriz, después de eliminar los elementos innecesarios. Esta comprobación debe realizarse primero. Luego hay un control de velocidad.