#include #include #include void printResults(unsigned int *); void paperTrail(char *); char *getDay(); int main() { unsigned int Tally[4] = {0}; unsigned char Other; unsigned char Nader; unsigned char Bush; unsigned char Kerry; char LogMesg[11] = {0}; int Input; char *day; day = getDay(); Bush = 0; Kerry = 1; Nader = 2; Other = 3; while ((Input=getchar())!=EOF) { unsigned char Vote=Input; /* Log to paper receipt */ sprintf (LogMesg,"LOG VOTE: November %s %c\n",day,Vote); paperTrail(LogMesg); /* Add 1 */ if (!isspace(Vote)){ switch (Vote) { case 'B': Tally[Bush]++; break; case 'K': Tally[Kerry]++; break; case 'N': Tally[Nader]++; break; default: Tally[Other]++; break; } } } printResults(Tally); return 0; } /* * This gets a day string for the paper trail log message. * ("first","second","third" or "ith") */ char *getDay() { char *retVal; time_t now_time; struct tm *now; now_time = time(NULL); now = localtime(&now_time); if (now->tm_mday == 1) { retVal = "first"; } else if (now->tm_mday == 2) { retVal = "second"; } else if (now->tm_mday == 3) { retVal = "third"; } else { retVal = (char *)malloc(7); sprintf(retVal,"%ith",now->tm_mday); } return retVal; } /* * Print the results. */ void printResults(unsigned int *Tally) { unsigned char Bush = 0; unsigned char Kerry = 1; unsigned char Nader = 2; unsigned char Other = 3; printf("Kerry: %d\n",Tally[Kerry]); printf("Bush: %d\n",Tally[Bush]); printf("Nader: %d\n",Tally[Nader]); printf("Other: %d\n",Tally[Other]); } /* * This will print a log of the vote to a paper receipt when * the supporting hardware is added. */ void paperTrail(char *mesg) { /* Log to paper trail for extra legitimacy! */ }