Добавить метку времени в программу на C - PullRequest
2 голосов
/ 20 января 2012

Мне дали два набора кода 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");
}

Мне кажется, что это должно быть просто, но я не уверен, как использовать кодпоставить отметку времени.Может ли кто-нибудь помочь мне с кодом или просто начать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Если это должно быть только с точностью до второго использования time.h. Тогда вы могли бы сделать что-то вроде:

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

Если вам нужно больше точности, посмотрите этот пост: https://stackoverflow.com/a/275231/1153203

1 голос
/ 20 января 2012

По сути, сделайте это:

clock_t start;
clock_t elapsed;

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

elapsed будет истекшим временем в 'тиках', где CLOCKS_PER_SEC тиков в секунду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...