2012-01-20 3 views
2

C에서 프로그램에 타임 스탬프를 추가하고이 코드를 사용하도록 요청했습니다 : 그리고 나는를 추가하려면이 코드를 사용할 필요가내가 C 코드의 두 세트를 주어 졌어

#include <stdio.h> 

void main() { 
    int n, c=0; 
    scanf("%d", &n); 
    while(n != 1) { 
    c++; 
    if(n%2 == 0) 
     n = n/2; 
    else 
     n = 3*n + 1; 
    } 
    printf("n = %d\n", n); 
    printf("iterations = %d\n", c); 
} 

을 입력 문장 다음에 그리고 프로그램이 끝나기 전에 위의 프로그램에 대한 타임 스탬프. 프로그램을 실행하는 데 걸리는 클럭주기 및 초 수를 계산할 때이 값을 사용해야합니다.

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

void sleep2(int wait) { 
    clock_t goal; // clock_t defined in <time.h> 
    goal = wait * CLOCKS_PER_SEC + clock(); 
    while(goal > clock()) 
    ; 
} 

main() { 
    int delay; 
    printf("Enter an integer ...\n"); 
    scanf("%d", &delay); 
    printf("To be delayed for %d seconds ...\n", delay); 
    sleep2(delay); 
    printf("expired\n"); 
} 

나는 단순해야한다고 생각하지만, 타임 스탬프를 넣는 코드를 사용하는 방법을 잘 모르겠습니다. 누군가 코드에 대한 도움을 주시겠습니까?

감사합니다.

+0

StackOverflow에 오신 것을 환영합니다. 게시 할 때 코드를 올바르게 포맷하려면 몇 초가 걸립니다. 확인을 위해 쓰여지는 바로 아래의 영역에 쓰기를 실시간으로 미리 볼 수 있습니다. 힌트 : 탭 대신 공백을 사용하고 4 칸을 들여 코드 본문을 시작하십시오. 제대로 서식을 지정하면 사람들이 쉽게 읽을 수 있습니다. (다른 사람은 자신의 시간을 보내지 않아도됩니다.) :) 더 쉬운 질문은 대답을 얻을 가능성이 높습니다. (그리고 더 빨리, 너무.) 고마워. :) –

+0

그것은 혼란스러운 두 번째 프로그램입니다. 일정한 시간이 지나기 전까지 만 [busy-waits] (http://en.wikipedia.org/wiki/Busy_wait)합니다. 실제로 무언가가 실제로 얼마나 오래 걸렸는 지 알려주는 것은 쓸모가 없습니다. (비록'clock()'함수가 확실히 그것을 제공 할 수 있습니다.) – sarnold

+0

@KenWhite - 죄송합니다. 탭 대신 공백을 사용했는데 여전히 작동하지 않는 것 같습니다. – aclark

답변

1

는 기본적으로이 수행합니다 : 더 정확성이 게시물을 참조해야하는 경우

time_t startT = time(null); 
//stuff 
time_t finalTime = time(null) - startT; 

: 그럼 당신은 같은 뭔가를 할 수

clock_t start; 
clock_t elapsed; 

start = clock(); 
... 
elapsed = clock() - start; 

elapsed가의 경과 시간이 될 것이다 '틱' 초당 틱수는 CLOCKS_PER_SEC입니다.

+0

@MRAB에 감사합니다. – aclark