// Source: "Software Design ...", John A Robinson, Newnes, 2004, page 67. // // Division tester program // #include #include // For random number functions #include // For time functions using namespace std; int main() { int dividend, divisor, answer; // answer = dividend/divisor int users_answer; long start_time; // long because return value from time() is long int duration; int sum_correct = 0; int sum_durations = 0; int i; // Counter srand(time(NULL)); // Use the current time to "seed" the random number // generator for (i = 0; i < 10; i++) { answer = rand()/(RAND_MAX/8) + 2; // Generate answer and divisor, then work out divisor = rand()/(RAND_MAX/8) + 2; // dividend from them. See text for explanation dividend = answer*divisor; // of random number generation. cout << "What is " << dividend << " divided by " << divisor << "?\n"; start_time = time(NULL); cin >> users_answer; if (users_answer != answer) cout << "Wrong! The answer is " << answer << '\n'; else { cout << "Right! (in " << (duration = time(NULL)-start_time) << " seconds)\n"; sum_correct++; sum_durations += duration; } } cout << sum_correct << " out of 10 correct.\n"; if (sum_correct) cout << "Average time = " << (double) sum_durations/sum_correct << " seconds\n"; return 0; }