/* * Title: question4.c * Final * BY: John Stile * Purpose: Write a program that computes the age of the user. * An approximate answer, based on the year of the person's birth, is required. * The program should: * a) Ask user to input the year of his/her birth. * b) Compare the input year with the current year. * If the input year is later than the current year, responly with ONLY an error. * If the input is valid, print out the user's age to the screen. * c) Use a preprocessor command to define the current year such that the program * can easily modify from year to year. */ #include // include funciton headers from stdo library #include // this gets us time() and localtime() function and types. #define THIS_YEAR 2007 // preprocessor macro to set current year. ///////////////////////////////////////////////////////// // prototypes void prompt_input ( int * ); // takes the address of an int, and stores users birth year. void get_year( int * ); // takes the address of an int, and stores current year. ///////////////////////////////////////////////////////// int main (void) // header for main. takes nothing, returns an int to calling shell { // begin main block int birth_year; // declare int birth_year int this_year; // declare int this_year prompt_input (&birth_year); // calling prompt_input, takes address of int, returns nothing printf("You entered: %d\n", birth_year); // print what was recorded get_year(&this_year); // calling get_year, takes address of this_year, returns nothing printf("Current year: %d.\n", this_year); // print current year if( birth_year > this_year ) // evaluate if birth_year is greater than this_year // if true, do block { printf("Impossible!\nBorn:%d before Today:%d\n", birth_year, this_year); // print output return 1; // exit program, return 1 to calling funciton }else{ printf("You are %d year(s) old\n", (this_year-birth_year) ); // print output, age calculated } return 0; } ///////////////////////////////////////////////////////// // functions void prompt_input ( int * input ) { printf("Input your year of birth and press Enter.(i.e.1969): "); // prompt for input scanf( "%d", input ); // read from stdin, store in address pointed to by input pointer. getchar(); // clear input buffer return; } ///////////////////////////////////////////////////////// void get_year(int * year) { *year=THIS_YEAR; /* // Better Method than Macro: // Have the computer calculate current year // so the program doesn't have to be recompiled time_t tim=time(NULL); // declare variable type time_t named time. // initialize with value returned by time() // time() returns the time since the Epoch (00:00:00 UTC, January 1, 1970) in seconds struct tm *now=localtime(&tim); // declare variable type struct tm pointer named now // initialize with value returned by localtime ( &t_time ) // localtime() takes address of varialbe of type t_time, // localtime() returns type struct tm pointer. *year=(now->tm_year + 1900); // tm->tm_year shows the year . */ return; } ///////////////////////////////////////////////////////// /* //Output: ./question4 Input your year of birth and press Enter.(i.e.1969): 2008 You entered: 2008 Current year: 2007. Impossible to be born later than today! Born:2008 before Today:2007 ./question4 Input your year of birth and press Enter.(i.e.1969): 1969 You entered: 1969 Current year: 2007. You are 38 year(s) old */