Witam,
mam problem z mierzeniem czasu wykonywania programu.
Niezależnie od tego ile liczb do sortowania wpiszę ostatecznie czas wynosi: 0.00000000 (nie ważne jaką ilość miejsc po przecinku wstawie). Co ciekawe użycie nawet najprostszej pętli wyświetlającej liczby od 0 do 10 w przedziale między start a koniec powoduje że czas wykonywania pokazuje się poprwany. Wykonałem już sporo różnych innych wariantów ale dalej nic..
Jeżeli ktoś sie z czymś takim spotkał bądź zauważył gdzie popełniłem błąd(może czegoś do końca nie zrozumiałem) i może pomóc z góry dziękuje (:
double roznica;
cout.precision(50); //liczba miejsc po przecinku, dokladnosc naszego wyniku
clock_t start, koniec; //inicjacja zmiennych zegarowych
start=clock(); //zapisanie czasu startu mierzenia
//-------------------------------------------------------------------------------------
//start {MOMENT W KTÓRYM CHCE ZACZĄĆ MIERZYĆ CZAS}
int a,i;
float pomocnicza;
for(a=1; a<liczba_elementow; a=3*a+1) {};
a=a/9;
if(!a)
a++;
while(a)
{
for(int j=liczba_elementow-a-1; j>=0; j--)
{
pomocnicza=tab[j];
i=j+a;
while((i<liczba_elementow)&&(pomocnicza>tab[i]))
{
tab[i-a]=tab[i];
i=i+a;
}
tab[i-a]=pomocnicza;
}
a =a/3;
}
//koniec wykonywania progrmau
//-------------------------------------------------------------------------------------
koniec=clock();//zapisanie konca mierzenia
//-------------------------------------------------------------------------------------
cout<<"\nPo sortowaniu: ";
for(i = 0; i < liczba_elementow; i++)
{
cout<<" "<<tab[i];
}
cout.setf(ios::fixed);
roznica=(koniec-start)/(double)CLOCKS_PER_SEC;//obliczenie roznicy, czyli czasu wykonania
cout<<endl;
cout<<"Czas wykonania: "<<roznica;
cout<<endl;