2013-02-25 3 views
0

아래 코드는 for 루프의 런타임을 초 단위로 찾아야합니다. 다른 리소스를 살펴보면 for 루프가 실행 된 후 clock()에서 처음으로 clock()을 빼내는 트릭을 수행해야합니다. 코드가 쓰여진 것처럼 작동하지 않는 이유는 무엇입니까?C 코드에서 런타임 코드 찾기

#include <stdio.h> 
#include <time.h> 

//prototypes 
int rfact(int n); 
int temp = 0; 

main() 
{ 
    int n = 0; 
    int i = 0; 
    double result = 0.0; 
    clock_t t; 
    printf("Enter a value for n: "); 
    scanf("%i", &n); 

    printf("n=%i\n", n); 

    //get current time 
    t = clock(); 

    //process factorial 2 million times 
    for(i=0; i<2000000; i++) 
    { 
     rfact(n); 
    } 

    printf("n=%i\n", n); 

    //get total time spent in the loop 
    result = (double)((clock() - t)/CLOCKS_PER_SEC); 

    //print result 
    printf("runtime=%d\n", result); 
} 

//factorial calculation 
int rfact(int n) 
{ 

    if (n<=0) 
    { 
     return 1; 
    } 
    return n * rfact(n-1); 
} 
+1

당신은 질문을 잊어 버렸습니다. –

+0

그게 당혹 스럽네. – zakparks31191

답변

2
result = (double)((clock() - t)/CLOCKS_PER_SEC); 

이 있어야한다 :

result = ((double)(clock() - t))/CLOCKS_PER_SEC; 

그렇지 않으면, 당신은 정수 나눗셈을하고있는 당신이 원하는 무엇을하지 않은, 이중에 결과를 변환. 또한

:

printf("runtime=%d\n", result); 

이되어야한다 :

printf("runtime=%f\n", result); 
+0

나는 그것을 실행할 때 밀리 초 단위로 끝난 후에 긴 숫자를 얻는다. 출력마다 -343597384와 1202590843 사이의 스위치가 – zakparks31191

+0

번 실행됩니다 :'printf ("runtime = % d \ n", result);'. '% d'는'int'를위한 것이지만'result'는 실수입니다. –

관련 문제