# include # include // // We will need the IRAN function to set the secret number: // int iran ( int a, int b, int *seed ); int main ( ) { int guess; int seed; int secret; int turns; // // Scramble the random number generator. // seed = time ( 0 ); // // SEED is just a number, and you can print it out if you like. // printf ( "SEED = %i\n", seed ); // // Get a secret value between 0 and 100. // secret = iran ( 0, 100, &seed ); // // Torture the user. // turns = 0; printf ( "Guess my number, or -1 to quit!\n" ); while ( 1 ) { scanf ( "%i", &guess ); if ( guess == -1 ) { printf ( "Sorry you got tired! The secret number was %d\n", secret ); break; } turns = turns + 1; if ( guess == secret ) { printf ( "You got it! My secret number was %d!\n", secret ); break; } else if ( guess < secret ) { printf ( "Higher!\n" ); } else if ( secret < guess ) { printf ( "Lower!\n" ); } } printf ( "\n" ); printf ( "You played for %i turns.\n", turns ); return 0; } int iran ( int a, int b, int *seed ) // // IRAN returns a random integer between A and B. { int i4_huge = 2147483647; int k; float value; // // Check SEED. // if ( *seed == 0 ) { printf ( "\n" ); printf ( "IRAN - Fatal error!\n" ); printf ( " Input value of SEED = 0.\n" ); exit ( 1 ); } // // Update SEED. // k = *seed / 127773; *seed = 16807 * ( *seed - k * 127773 ) - k * 2836; if ( *seed < 0 ) { *seed = *seed + i4_huge; } // // Use the MOD function. // if ( b < a ) { value = b + ( *seed % ( a - b ) ); } else if ( b == a ) { value = a; } else { value = a + ( *seed % ( b - a ) ); } return value; }