/* enum1.c -- Starting to use enumerated types: Printing for each * day of the week, today, yesterday, and tomorrow, both * as a string and as a number. */ #include /* Introducing an enumerated data type */ enum days {monday,tuesday,wednesday,thursday,friday,saturday,sunday}; typedef enum days days; // This allows us to use "days" as an abbreviation // for "enum days" /* Two useful functions */ days yesterday(days today){ return (today+6)%7; } days tomorrow(days today){ return (today+1)%7; } // A useful array: thedays is an array of constant (i.e you cannot // modify them) pointers to constant (i.e. you cannot modify them) strings const char * const thedays[] = {"monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"}; int main(void){ days today; printf("today \tyesterday \ttomorrow\n" "============================================\n"); for (today=monday;today<=sunday;today++) printf("%s = %d \t %s = %d \t %s = %d\n", thedays[today], today, thedays[yesterday(today)], yesterday(today), thedays[tomorrow(today)], tomorrow(today)); } /* The output is: today yesterday tomorrow ============================================ monday = 0 sunday = 6 tuesday = 1 tuesday = 1 monday = 0 wednesday = 2 wednesday = 2 tuesday = 1 thursday = 3 thursday = 3 wednesday = 2 friday = 4 friday = 4 thursday = 3 saturday = 5 saturday = 5 friday = 4 sunday = 6 sunday = 6 saturday = 5 monday = 0 */