#include <stdio.h>

struct countyTotals{
        int totalCorkCodes;
        int totalDublinCodes;
        int totalGalwayCodes;
        int totalLimerickCodes;
        int totalTiperaryCodes;
        int totalWaterfordCodes;
        int totalInvalidCountyCodes;   
};

struct countyTotals countCntyOccur (char cntyCodes[], int size);

int main(void) {

	char cntyCodes[]= {'C', 'c', 'E', 'G', 'G', 'L', 'l', 'l', 'T', 'W', 'J', 'd'};
    struct countyTotals countyFreqs = countCntyOccur(cntyCodes,12);
    printf("Cork County: %i\n", countyFreqs.totalCorkCodes);
    printf("Dublin County: %i\n", countyFreqs.totalDublinCodes);
    printf("Galway County: %i\n", countyFreqs.totalGalwayCodes);
    printf("Limerick County: %i\n", countyFreqs.totalLimerickCodes);
    printf("Tiperary County: %i\n", countyFreqs.totalTiperaryCodes);
    printf("Waterford County: %i\n", countyFreqs.totalWaterfordCodes);
    printf("InvalidCountyCodes: %i\n", countyFreqs.totalInvalidCountyCodes);

	return 0;
}


struct countyTotals countCntyOccur(char cntyCodes[], int size){

    int totalCorkCodes=0;
    int totalDublinCodes=0;
    int totalGalwayCodes=0;
    int totalLimerickCodes=0;
    int totalTiperaryCodes=0;
    int totalWaterfordCodes=0;
    int totalInvalidCountyCodes=0;


    for (int i = 0; i < size; i++) {
        // Switch statement
        switch (cntyCodes[i]) {
        case 'C':
        case 'c':
            totalCorkCodes+=1;
            break;

        case 'D':
        case 'd':
            totalDublinCodes+=1;
            break;

        case 'G':
        case 'g':
            totalGalwayCodes+=1;
            break;

        case 'L':
        case 'l':
            totalLimerickCodes+=1;
            break;
        
        case 'T':
        case 't':
            totalTiperaryCodes+=1;
            break;
        
        case 'W':
        case 'w':
            totalWaterfordCodes+=1;
            break;
        
        default:
            totalInvalidCountyCodes+=1;
            break;
        }

    }

    struct countyTotals specificCountyTotals = {totalCorkCodes, totalDublinCodes, totalGalwayCodes,
                                                totalLimerickCodes, totalTiperaryCodes,
                                                totalWaterfordCodes, totalInvalidCountyCodes};
    
    return specificCountyTotals;

}