////////////////////// // Vote Counter // // by Adam Barth // // October 16, 2004 // ////////////////////// #include #include // Declare some decent types #define CHAR char #define SHORT short #define INT int #define LONG long int #define UCHAR unsigned CHAR #define USHORT unsigned SHORT #define UINT unsigned INT #define ULONG unsigned LONG // I forget what header this is in #define EXIT_SUCCESS 0 // Name the candidates #define Kerry 'K' #define Bush 'B' #define Nader 'N' #define iKerry 0 #define iBush 1 #define iNader 2 #define iOther 3 #define CandidateCount 4 // Useful macros #define clearKerry(votes) votes[iKerry] = 0 #define clearBush(votes) votes[iBush] = 0 #define clearNader(votes) votes[iNader] = 0 #define clearOther(votes) votes[iOther] = 0 #define isKerry(v) v==Kerry #define isBush(v) v==Bush #define isNader(v) v==Nader #define incKerry(votes) votes[iKerry]++ #define incBush(votes) votes[iBush]++ #define incNader(votes) votes[iNader]++ #define incOther(votes) votes[iOther]++ #define getKerry(votes) votes[iKerry] #define getBush(votes) votes[iBush] #define getNader(votes) votes[iNader] #define getOther(votes) votes[iOther] int main( int argc, char argv[][] ) { INT c; ULONG votes[CandidateCount]; clearKerry(votes); clearBush(votes); clearNader(votes); clearOther(votes); while( (c=getchar()) != EOF ) { UCHAR v = c; if( !isspace(v) && isKerry(v) ) incKerry(votes); if( !isspace(v) && !isKerry(v) && isBush(v) ) incBush(votes); if( !isspace(v) && !isKerry(v) && !isBush(v) && isNader(v) ) incNader(votes); if( !isspace(v) && !isKerry(v) && !isBush(v) && !isNader(v) ) incOther(votes); } printf("Kerry: %d\n", getKerry(votes)); printf("Bush: %d\n", getBush(votes)); printf("Nader: %d\n", getNader(votes)); printf("Other: %d\n", getOther(votes)); return EXIT_SUCCESS; }