Verilen eleman(lar)ın bir dizisini temizleme - sayfa 20

 
Peter, benzersiz bir programlama tarzın var. Kısacası, programladığınız için değil, buna rağmen programlıyorsunuz.
 
Реter Konow :

Doğru. Ancak sağlanan algoritmaların boşluk bırakmadığını nereden biliyoruz? Sağlama toplamı bunu kanıtlamaz. Eleman sayısı da. Sonuçta işlev, dizi yeniden boyutlandırılmadan önceki öğeleri sayar.

Bir uygulamaya rastlamış olsanız da, statik dizilerdeki hata düzeltmeleri.

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

Şimdi statik ise, kuyruğu temizleriz.

Dosyalar:
 
Реter Konow :

Doğru. Ancak sağlanan algoritmaların boşluk bırakmadığını nereden biliyoruz? Sağlama toplamı bunu kanıtlamaz. Eleman sayısı da. Sonuçta işlev, dizi yeniden boyutlandırılmadan önceki öğeleri sayar.

Kodun ilk sürümlerine değil, son sürümlerine bakmalısınız.
Uzun süredir, dizideki öğelerin sırasını dikkate alan böyle bir sağlama toplamı kullanılmıştır:

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

3. testteki bir hatayı düzelttim ve fonksiyonumu düzelttim

Dosyalar:
 
Nikolai Semko :

Kodun ilk sürümlerine değil, son sürümlerine bakmalısınız.
Uzun süredir, dizideki öğelerin sırasını dikkate alan böyle bir sağlama toplamı kullanılmıştır:

Doğruluğunun görsel kanıtına ihtiyacınız var. Bunu yapmak için 20 sayı dizisi yeterlidir. Algoritma bu testi geçerse hız için test edilebilir.

Yapılan test kör bir testtir.

Belki tüm algoritmalar düzgün çalışıyordur ya da belki liderler koltuklarından kalkacaktır.

 
Реter Konow :

Doğruluğunun görsel kanıtına ihtiyacınız var. Bunu yapmak için 20 sayı dizisi yeterlidir. Algoritma bu testi geçerse hız için test edilebilir.

Sağlama toplamının görevi, sağlama toplamı aynıysa dizilerin aynı olduğunu garanti etmek değil, sağlama toplamı farklıysa farklı olduklarını garanti etmektir.

 
Nikolai Semko :

Sağlama toplamının görevi, sağlama toplamı aynıysa dizilerin aynı olduğunu garanti etmek değil, sağlama toplamı farklıysa farklı olduklarını garanti etmektir.

Nikolai, benim örneğimi kullanmak ve algoritmaları 20 elemanlı bir diziyle test etmek zor değil mi? Sadece sonuçlarda gösterilsin mi?

 
Реter Konow :

Doğruluğunun görsel kanıtına ihtiyacınız var. Bunu yapmak için 20 sayı dizisi yeterlidir. Algoritma bu testi geçerse hız için test edilebilir.

Yapılan test kör bir testtir.

Belki tüm algoritmalar düzgün çalışıyordur ya da belki liderler koltuklarından kalkacaktır.

Peki, sağlama toplamına güvenip güvenmediğinizi kontrol edin, o zaman sorun nedir?

 
Реter Konow :

Nikolai, benim örneğimi kullanmak ve algoritmaları 20 elemanlı bir diziyle test etmek zor değil mi? Sadece sonuçlarda gösterilsin mi?

20 elemanlı bir dizi ile fonksiyonun hızını değerlendirmek imkansızdır. Ve bu iş parçacığının amacı budur.

 
Nikolai Semko :

20 elemanlı bir dizi ile fonksiyonun hızını değerlendirmek imkansızdır. Ve bu iş parçacığının amacı budur.

Algoritma için başka bir gereksinim daha vardır - gereksiz öğeleri çıkardıktan sonra öğelerin dizi içine doğru yerleştirilmesi. Önce bu kontrol yapılmalıydı. Ardından, bir hız testi.