#include <stdio.h>
// **************************************************
// Structure: countyTotals
//
// Description:
// Holds the total count of each valid Irish county code.
// Includes a count for invalid county codes as well.
// **************************************************
struct countyTotals
{
int totalCorkCodes;
int totalDublinCodes;
int totalGalwayCodes;
int totalLimerickCodes;
int totalTiperaryCodes;
int totalWaterfordCodes;
int totalInvalidCountryCodes;
} ;
// **************************************************
// Function: freqOfIrishCounties
//
// Description:
// Counts the occurrences of each valid Irish county code
// (Cork, Dublin, Galway, Limerick, Tiperary, Waterford)
// in an array of characters. Both uppercase and lowercase
// letters are accepted. Any invalid county code is also
// counted separately.
//
// Parameters:
// countyArrayList[] - array containing the county codes
// size - number of elements in the array
//
// Returns:
// A struct containing totals for each county and invalid codes.
// **************************************************
struct countyTotals freqOfIrishCounties( char countyArrayList[ ] , int size)
{
struct countyTotals myCountyTotals = { 0 , 0 , 0 , 0 , 0 , 0 , 0 } ; // holds the county counts
// and initializes them to zero
// Review each of the county codes in the array
for ( int i = 0 ; i < size; i++ )
{
// increments the total of the current county character value
// note that case does not matter, both upper and lower count the same
// towards the totals
switch ( countyArrayList[ i] )
{
case 'C' :
case 'c' :
myCountyTotals.totalCorkCodes ++;
break ;
case 'D' :
case 'd' :
myCountyTotals.totalDublinCodes ++;
break ;
case 'G' :
case 'g' :
myCountyTotals.totalGalwayCodes ++;
break ;
case 'L' :
case 'l' :
myCountyTotals.totalLimerickCodes ++;
break ;
case 'T' :
case 't' :
myCountyTotals.totalTiperaryCodes ++;
break ;
case 'W' :
case 'w' :
myCountyTotals.totalWaterfordCodes ++;
break ;
default :
myCountyTotals.totalInvalidCountryCodes ++;
break ;
} // switch
} // for
return ( myCountyTotals) ;
} // freqOfIrishCounties
// **************************************************
// Function: main
//
// Description:
// Demonstrates the freqOfIrishCounties function with
// a sample array of county codes and prints the results.
// **************************************************
int main( void )
{
char countyCodes[ ] = { 'C' , 'c' , 'E' , 'G' , 'G' , 'L' , 'l' , 'l' , 'T' , 'W' , 'J' , 'd' } ;
int size = sizeof ( countyCodes) / sizeof ( countyCodes[ 0 ] ) ;
struct countyTotals result = freqOfIrishCounties( countyCodes, size) ;
printf ( "Total Cork Codes: %d\n " , result.
totalCorkCodes ) ; printf ( "Total Dublin Codes: %d\n " , result.
totalDublinCodes ) ; printf ( "Total Galway Codes: %d\n " , result.
totalGalwayCodes ) ; printf ( "Total Limerick Codes: %d\n " , result.
totalLimerickCodes ) ; printf ( "Total Tiperary Codes: %d\n " , result.
totalTiperaryCodes ) ; printf ( "Total Waterford Codes: %d\n " , result.
totalWaterfordCodes ) ; printf ( "Total Invalid County Codes: %d\n " , result.
totalInvalidCountryCodes ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLyBTdHJ1Y3R1cmU6IGNvdW50eVRvdGFscwovLwovLyBEZXNjcmlwdGlvbjoKLy8gICBIb2xkcyB0aGUgdG90YWwgY291bnQgb2YgZWFjaCB2YWxpZCBJcmlzaCBjb3VudHkgY29kZS4KLy8gICBJbmNsdWRlcyBhIGNvdW50IGZvciBpbnZhbGlkIGNvdW50eSBjb2RlcyBhcyB3ZWxsLgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpzdHJ1Y3QgY291bnR5VG90YWxzCnsKICAgIGludCB0b3RhbENvcmtDb2RlczsKICAgIGludCB0b3RhbER1YmxpbkNvZGVzOwogICAgaW50IHRvdGFsR2Fsd2F5Q29kZXM7CiAgICBpbnQgdG90YWxMaW1lcmlja0NvZGVzOwogICAgaW50IHRvdGFsVGlwZXJhcnlDb2RlczsKICAgIGludCB0b3RhbFdhdGVyZm9yZENvZGVzOwogICAgaW50IHRvdGFsSW52YWxpZENvdW50cnlDb2RlczsKfTsKCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vIEZ1bmN0aW9uOiBmcmVxT2ZJcmlzaENvdW50aWVzCi8vCi8vIERlc2NyaXB0aW9uOgovLyAgIENvdW50cyB0aGUgb2NjdXJyZW5jZXMgb2YgZWFjaCB2YWxpZCBJcmlzaCBjb3VudHkgY29kZQovLyAgIChDb3JrLCBEdWJsaW4sIEdhbHdheSwgTGltZXJpY2ssIFRpcGVyYXJ5LCBXYXRlcmZvcmQpCi8vICAgaW4gYW4gYXJyYXkgb2YgY2hhcmFjdGVycy4gQm90aCB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZQovLyAgIGxldHRlcnMgYXJlIGFjY2VwdGVkLiBBbnkgaW52YWxpZCBjb3VudHkgY29kZSBpcyBhbHNvCi8vICAgY291bnRlZCBzZXBhcmF0ZWx5LgovLwovLyBQYXJhbWV0ZXJzOgovLyAgIGNvdW50eUFycmF5TGlzdFtdIC0gYXJyYXkgY29udGFpbmluZyB0aGUgY291bnR5IGNvZGVzCi8vICAgc2l6ZSAgICAgICAgICAgICAgLSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5Ci8vCi8vIFJldHVybnM6Ci8vICAgQSBzdHJ1Y3QgY29udGFpbmluZyB0b3RhbHMgZm9yIGVhY2ggY291bnR5IGFuZCBpbnZhbGlkIGNvZGVzLgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpzdHJ1Y3QgY291bnR5VG90YWxzIGZyZXFPZklyaXNoQ291bnRpZXMoY2hhciBjb3VudHlBcnJheUxpc3RbXSwgaW50IHNpemUpCnsKICAgIHN0cnVjdCBjb3VudHlUb3RhbHMgbXlDb3VudHlUb3RhbHMgPSB7MCwwLDAsMCwwLDAsMH07ICAvLyBob2xkcyB0aGUgY291bnR5IGNvdW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpbml0aWFsaXplcyB0aGVtIHRvIHplcm8KCiAgICAvLyBSZXZpZXcgZWFjaCBvZiB0aGUgY291bnR5IGNvZGVzIGluIHRoZSBhcnJheQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgICB7CiAgICAgICAgLy8gaW5jcmVtZW50cyB0aGUgdG90YWwgb2YgdGhlIGN1cnJlbnQgY291bnR5IGNoYXJhY3RlciB2YWx1ZQogICAgICAgIC8vIG5vdGUgdGhhdCBjYXNlIGRvZXMgbm90IG1hdHRlciwgYm90aCB1cHBlciBhbmQgbG93ZXIgY291bnQgdGhlIHNhbWUKICAgICAgICAvLyB0b3dhcmRzIHRoZSB0b3RhbHMKICAgICAgICBzd2l0Y2ggKGNvdW50eUFycmF5TGlzdFtpXSkKICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgJ0MnOgogICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgICAgIG15Q291bnR5VG90YWxzLnRvdGFsQ29ya0NvZGVzKys7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ0QnOgogICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgICAgIG15Q291bnR5VG90YWxzLnRvdGFsRHVibGluQ29kZXMrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnRyc6CiAgICAgICAgICAgIGNhc2UgJ2cnOgogICAgICAgICAgICAgICAgbXlDb3VudHlUb3RhbHMudG90YWxHYWx3YXlDb2RlcysrOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdMJzoKICAgICAgICAgICAgY2FzZSAnbCc6CiAgICAgICAgICAgICAgICBteUNvdW50eVRvdGFscy50b3RhbExpbWVyaWNrQ29kZXMrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnVCc6CiAgICAgICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAgICAgICAgbXlDb3VudHlUb3RhbHMudG90YWxUaXBlcmFyeUNvZGVzKys7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ1cnOgogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgIG15Q291bnR5VG90YWxzLnRvdGFsV2F0ZXJmb3JkQ29kZXMrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIG15Q291bnR5VG90YWxzLnRvdGFsSW52YWxpZENvdW50cnlDb2RlcysrOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfSAvLyBzd2l0Y2gKICAgIH0gLy8gZm9yCgogICAgcmV0dXJuIChteUNvdW50eVRvdGFscyk7Cn0gLy8gZnJlcU9mSXJpc2hDb3VudGllcwoKCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vIEZ1bmN0aW9uOiBtYWluCi8vCi8vIERlc2NyaXB0aW9uOgovLyAgIERlbW9uc3RyYXRlcyB0aGUgZnJlcU9mSXJpc2hDb3VudGllcyBmdW5jdGlvbiB3aXRoCi8vICAgYSBzYW1wbGUgYXJyYXkgb2YgY291bnR5IGNvZGVzIGFuZCBwcmludHMgdGhlIHJlc3VsdHMuCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmludCBtYWluKHZvaWQpCnsKICAgIGNoYXIgY291bnR5Q29kZXNbXSA9IHsnQycsICdjJywgJ0UnLCAnRycsICdHJywgJ0wnLCAnbCcsICdsJywgJ1QnLCAnVycsICdKJywgJ2QnfTsKICAgIGludCBzaXplID0gc2l6ZW9mKGNvdW50eUNvZGVzKSAvIHNpemVvZihjb3VudHlDb2Rlc1swXSk7CgogICAgc3RydWN0IGNvdW50eVRvdGFscyByZXN1bHQgPSBmcmVxT2ZJcmlzaENvdW50aWVzKGNvdW50eUNvZGVzLCBzaXplKTsKCiAgICBwcmludGYoIlRvdGFsIENvcmsgQ29kZXM6ICVkXG4iLCByZXN1bHQudG90YWxDb3JrQ29kZXMpOwogICAgcHJpbnRmKCJUb3RhbCBEdWJsaW4gQ29kZXM6ICVkXG4iLCByZXN1bHQudG90YWxEdWJsaW5Db2Rlcyk7CiAgICBwcmludGYoIlRvdGFsIEdhbHdheSBDb2RlczogJWRcbiIsIHJlc3VsdC50b3RhbEdhbHdheUNvZGVzKTsKICAgIHByaW50ZigiVG90YWwgTGltZXJpY2sgQ29kZXM6ICVkXG4iLCByZXN1bHQudG90YWxMaW1lcmlja0NvZGVzKTsKICAgIHByaW50ZigiVG90YWwgVGlwZXJhcnkgQ29kZXM6ICVkXG4iLCByZXN1bHQudG90YWxUaXBlcmFyeUNvZGVzKTsKICAgIHByaW50ZigiVG90YWwgV2F0ZXJmb3JkIENvZGVzOiAlZFxuIiwgcmVzdWx0LnRvdGFsV2F0ZXJmb3JkQ29kZXMpOwogICAgcHJpbnRmKCJUb3RhbCBJbnZhbGlkIENvdW50eSBDb2RlczogJWRcbiIsIHJlc3VsdC50b3RhbEludmFsaWRDb3VudHJ5Q29kZXMpOwoKICAgIHJldHVybiAwOwp9Cg==