Using enumerations

/* 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 <stdio.h>

/* 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

*/

0 comments: