Commit 3b4b04c3 authored by Kevin Lyda's avatar Kevin Lyda 💬
Browse files

Shows timer info.

parent a34fa21a
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>

int
random_two_digit_number() {
@@ -29,16 +30,41 @@ read_number() {
  return atoi(buf);
}

typedef struct timer_struct {
  struct timeval then;
} timer_t;

void
start_timer(timer_t *timer) {
  gettimeofday(&timer->then, NULL);
}

long int
end_timer(timer_t *timer) {
  struct timeval now;
  long int delta;

  gettimeofday(&now, NULL);
  delta = (now.tv_sec - timer->then.tv_sec) * 1000000;
  delta += now.tv_usec - timer->then.tv_usec;

  return delta;
}

int
main(int argc, char *argv[]) {
  int guess, number;
  timer_t timer;
  long int delta;

  srand(time(NULL));

  while (1) {
    number = random_two_digit_number();
    printf("Number is %d. Cube root (0 to exit)? ", cube(number));
    start_timer(&timer);
    guess = read_number();
    delta = end_timer(&timer);
    if (guess == 0) {
      exit(0);
    }
@@ -47,5 +73,12 @@ main(int argc, char *argv[]) {
    } else {
      printf("Not correct. Number was %d.\n", number);
    }
    if (delta < 1000) {
      printf("Took %ldus\n", delta);
    } else if (delta < 1000000) {
      printf("Took %.1fms\n", delta / 1000.0);
    } else {
      printf("Took %.2fs\n", delta / 1000000.0);
    }
  }
}