algorytmu nie utrudniaj, tylko go wykonaj np 10 000 razy. Wtedy będziesz miał czas wykonania powiedzmy w sekundach i powiedzmy, że będzie sens to mierzyć. Domyślnie timer pod windowsem na przykład ma rozdzielczość 50ms albo jakoś tak, więc może ci teraz program zwracać 0, 10, albo i 45. tę końcówkę można można psu w d... wsadzić.
#include "stdafx.h"
#include <time.h>
int _tmain(int argc, _TCHAR* argv[]) {
int a,s,i,t;
clock_t start, stop;
float time;
printf("Prosze podac liczbe=");
scanf("%d",&a);
start=clock(); // start pomiaru
for(int rpt=0; rpt<10000; rpt++) {
// mierzony kod
if(a>=0) {
s=1;
for(i=1; i<=a; i++)
s=i*s;
}
// koniec mierzonego kodu
}
stop=clock();
time=(stop - start)/CLK_TCK;
printf("Czas wykonania algorytmu xxx razy:%0.50f\n",time);
printf("Silnia podanej liczby wynosi:");
printf("%d\n",s);
}
else
printf("Niewlasciwy argument funkcji\n");
return 0;
}
btw: przy tak trywialnym kodzie (jedna pętla od 1 do a) to sam czas wykonania pętli "opakowującej" ma wpływ na wykonanie. Żeby to wyeliminować można się pobawić kodem, albo zrobić statystycznie. Tzn, zrobić testy dla a=1,2,3,...,1000
następnie zrobić wykres zależności czasu wykonania od wartości a.
z tego za pomocą regresji liczysz współczynniki prostej, która do tych punktów najlepiej pasuje (metoda najmniejszych kwadratów mi znana akurat jest). I masz ładnie wyliczone, ile wynosi stały narzut wynikający z "opakowania" - narzut wynosi tyle, ile Ci wyjdzie współczynnik b liczonej prostej.