From bbf588ee8f0df4fdd722388ef27ce0c9d856c5e7 Mon Sep 17 00:00:00 2001 From: cdez Date: Sun, 17 Sep 2023 13:50:23 -0700 Subject: [PATCH] Getting further, but still not working +- PA03_Main +- StateUtilities_LogN.c --- PA03-0920/PA03_Main | Bin 29184 -> 33320 bytes PA03-0920/StateUtilities_LogN.c | 241 ++++++++++++++++++++++++++------ 2 files changed, 200 insertions(+), 41 deletions(-) diff --git a/PA03-0920/PA03_Main b/PA03-0920/PA03_Main index 23a3a0696ce2dca83509674f89109bd4d03c7922..1c90e4ff9e9ee36bcb42a4c2e845d3fa8320f1b5 100755 GIT binary patch literal 33320 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[stateArr.size] = parameter - stateArr->array[stateArr.size].population = statePop; - stateArr->array[stateArr.size].growth = stateGrowth; - stateArr->array[stateArr.size].majority = politicalMajority; - // use strcpy(stateArr->array[stateArr.size].name, stateName) - strcpy(stateArr->array[stateArr.size].name, stateName); - // increment size (stateArr.size = stateArr.size + 1) - stateArr->size = stateArr->size + 1; - printf("\nDONE IF\n"); - } + checkForResize(stateArr); + // put in the data to the array + // stateArr->array[stateArr.size] = parameter + stateArr->array[stateArr->size].population = statePop; + stateArr->array[stateArr->size].growth = stateGrowth; + stateArr->array[stateArr->size].majority = politicalMajority; + // use strcpy(stateArr->array[stateArr.size].name, stateName) + strcpy(stateArr->array[stateArr->size].name, stateName); + // increment size (stateArr.size = stateArr.size + 1) + stateArr->size = stateArr->size + 1; // no return, void } @@ -68,10 +61,8 @@ Dependencies: addElementFromData - function uses one code statement void addElementFromElement( StateArrayType *stateArr, const StateDataType state ) { - printf("\nAdding Element\n"); addElementFromData(stateArr, state.name, state.population, state.growth, state.majority); - printf("\nAdded Element\n"); // no return, void } @@ -92,6 +83,17 @@ Dependencies: as needed, including malloc, free, keyword sizeof */ void checkForResize( StateArrayType *stateArray ) { + StateArrayType *biggerStateArray; + // do a similiar check to the one that was done in PA02 for size < capacity + if(stateArray->size + 1 > stateArray->capacity) + { + // create bigger array, use createStateArrayType(2x old capacity) + biggerStateArray = createStateArrayType(stateArray->capacity * 2); + // copy the old array stuff into the new array, use copyArrayType + copyArrayType(biggerStateArray, *stateArray); + // copy the new array stuff into the old space + copyArrayType(stateArray, *biggerStateArray); + } // no return, void } @@ -109,13 +111,9 @@ Dependencies: as needed, including free */ StateArrayType *clearStateArrayType( StateArrayType *stateArray ) { - int stateIterator; - for(stateIterator = 0; stateIterator < stateArray->size; stateIterator++) - { - // free the states from memory - free(&stateArray->array[stateIterator]); - } - // free the array in the stateArray + // free the array from memory + free(&stateArray->array); + // free the struct from memory free(stateArray); // return NULL once complete return NULL; @@ -133,6 +131,17 @@ Dependencies: as needed */ void copyArrayType( StateArrayType *dest, const StateArrayType src ) { + int currentSize; + // use a for loop to iterate through source array + // (start at zero, go to srcSize) + for(currentSize = 0; currentSize < src.size; currentSize++) + { + // copy each element from the array to the new array. + // uses deepCopy to do this. + deepCopy(&dest->array[currentSize], src.array[currentSize]); + } + dest->size = src.size; + dest->capacity = src.capacity; // no return, void } @@ -150,8 +159,15 @@ Dependencies: as needed, including function malloc and keyword sizeof */ StateArrayType *createStateArrayType( int initialCapacity ) { - // return NULL (temporarily) - return NULL; + StateArrayType *stateArrayCreation; + // initialize array type + stateArrayCreation = malloc(sizeof(StateArrayType)); + stateArrayCreation->size = 0; + stateArrayCreation->capacity = initialCapacity; + // initialize array + stateArrayCreation->array = malloc(sizeof(StateDataType) * initialCapacity); + // return stateArrayCreation + return stateArrayCreation; } /* @@ -167,6 +183,13 @@ Dependencies: as needed, including strcpy */ void deepCopy( StateDataType *dest, const StateDataType src ) { + // *dest.population = src.population (for each piece) + dest->population = src.population; + dest->growth = src.growth; + dest->majority = src.majority; + // strcpy for the string + // strcpy(*dest.name, src.name) + strcpy(dest->name, src.name); // no return, void } @@ -186,7 +209,136 @@ Dependencies: as needed */ void displayData( const StateArrayType arrayType, const char *subTitle ) { - // no return, void + int countStates; + // iterate through array to size, check if zero. + if(arrayType.size != 0) + { + printEndline(); + printString("Display Data - "); + printString(subTitle); + printEndline(); + printEndline(); + // create a table + // print PIPE character + printCharacter(PIPE); + // print ITEM justified center + printStringJustified("Item", ITEM_BLOCK_SIZE, "CENTER"); + // print PIPE character + printCharacter(PIPE); + // print STATE NAME justified center + printStringJustified("State Name", NAME_BLOCK_SIZE, "CENTER"); + // print PIPE character + printCharacter(PIPE); + // print POPULATION justified center + printStringJustified("Population", POPULATION_BLOCK_SIZE, "CENTER"); + // print PIPE character + printCharacter(PIPE); + // print GROWTH justified center + printStringJustified("Growth", GROWTH_BLOCK_SIZE, "CENTER"); + // print PIPE character + printCharacter(PIPE); + // print MAJORITY justified center + printStringJustified("Majority", MAJORITY_BLOCK_SIZE, "CENTER"); + // print PIPE character + printCharacter(PIPE); + // print new line + printEndline(); + // printing the top border piece + // print PIPE character + printCharacter(PIPE); + // print amount of = for ITEM + printCharacters(ITEM_BLOCK_SIZE, EQUALS); + // print PLUS (needs constant) character + printCharacter(PLUS); + // print amount of = for STATE NAME + printCharacters(NAME_BLOCK_SIZE, EQUALS); + // print PLUS character + printCharacter(PLUS); + // print amount of = for POPULATION + printCharacters(POPULATION_BLOCK_SIZE, EQUALS); + // print PLUS character + printCharacter(PLUS); + // print amount of = for GROWTH + printCharacters(GROWTH_BLOCK_SIZE, EQUALS); + // print PLUS character + printCharacter(PLUS); + // print amount of = for MAJORITY + printCharacters(MAJORITY_BLOCK_SIZE, EQUALS); + // print PIPE character + printCharacter(PIPE); + // print new line + printEndline(); + for(countStates = 0; countStates < arrayType.size; countStates++) + { + // use the constants to format the table + // print PIPE character + printCharacter(PIPE); + // print item justified right (size) + printIntegerJustified(countStates + 1, ITEM_BLOCK_SIZE, "RIGHT"); + // print PIPE character + printCharacter(PIPE); + // print state name justified left + printStringJustified(arrayType.array[countStates].name, + NAME_BLOCK_SIZE, "LEFT"); + // print PIPE character + printCharacter(PIPE); + // print population justified right + printIntegerJustified(arrayType.array[countStates].population, + POPULATION_BLOCK_SIZE, "RIGHT"); + // print PIPE character + printCharacter(PIPE); + // print growth justified right, need a % sign too. + //(requires some math trickery to make work) + printDoubleJustified(arrayType.array[countStates].growth * 100.00, + PRECISION_2, GROWTH_BLOCK_SIZE - 2, "RIGHT"); + printCharacter('%'); + printCharacter(SPACE); + // print PIPE character + printCharacter(PIPE); + // print majority justified center, + // also requires some math trickery to make work + printCharacters((MAJORITY_BLOCK_SIZE - 1) / 2, SPACE); + printCharacter(SPACE); + printCharacter(arrayType.array[countStates].majority); + printCharacters((MAJORITY_BLOCK_SIZE - 1) / 2, SPACE); + // print PIPE character + printCharacter(PIPE); + // print endline + printEndline(); + // printing for the spacer lines + // print PIPE character + printCharacter(PIPE); + // print amount of DASH for item + printCharacters(ITEM_BLOCK_SIZE, DASH); + // print PLUS character + printCharacter(PLUS); + // print amount of DASH for state name + printCharacters(NAME_BLOCK_SIZE, DASH); + // print PLUS character + printCharacter(PLUS); + // print amount of DASH for population + printCharacters(POPULATION_BLOCK_SIZE, DASH); + // print PLUS character + printCharacter(PLUS); + // print amount of DASH for growth + printCharacters(GROWTH_BLOCK_SIZE, DASH); + // print PLUS character + printCharacter(PLUS); + // print amount of DASH for majority + printCharacters(MAJORITY_BLOCK_SIZE, DASH); + // print PIPE character + printCharacter(PIPE); + // print endline + printEndline(); + } + } + else + { + //print out "Data not found - Display aborted". + printString("Data not found - Display aborted"); + printEndline(); + } + // no return, void } /* @@ -201,6 +353,8 @@ Dependencies: as needed */ void reverseArray( StateArrayType *stateArray ) { + // reverse in place? could use swap elements to make this happen. + // use a for loop? // no return, void } @@ -335,7 +489,7 @@ Dependencies: none void setEmptyElementData( StateDataType *element ) { // set the element's name to "" - strcpy(element->name, ""); + element->name[0] = NULL_CHAR; // set the element's population and growth to 0 element->population = 0; element->growth = 0.0; @@ -361,7 +515,7 @@ void showTitle() printString("Data Management with Log N Sorting"); // print endline printEndline(); - // use console io utilities to display 38 '=' + // use console io utilities to display 34 '=' printCharacters(TITLE_LENGTH, EQUALS); // print an endline printEndline(); @@ -381,6 +535,15 @@ Dependencies: as needed */ void swapElements( StateDataType *array, int leftIndex, int rightIndex ) { + // create StateDataType temp to store swapped element + StateDataType storeElement; + // use deepCopy to copy out swapped element + deepCopy(&storeElement, array[leftIndex]); + // use deepCopy to move the other element, + deepCopy(&array[leftIndex], array[rightIndex]); + // use deepCopy to copy the temp element to the other element + deepCopy(&array[rightIndex], storeElement); + // updated the array // no return, void } @@ -400,18 +563,15 @@ Dependencies: as needed */ bool uploadStateData( StateArrayType *arrayType, const char *fileName ) { - // setup a counter and other variables - int stateNum = 0; + // setup a temporary state and other variables StateDataType stateUpload; - bool fileOpenCheck; char currentString[STD_STR_LEN]; // int populationUpload; // double growthUpload; // char majorityUpload; // open file - setEmptyElementData(&stateUpload); - fileOpenCheck = openInputFile(fileName); - if(fileOpenCheck) + //setEmptyElementData(&stateUpload); + if(openInputFile(fileName)) { // read in the four strings/starting line // (use readStringToLineEndFromFile) @@ -431,12 +591,11 @@ bool uploadStateData( StateArrayType *arrayType, const char *fileName ) readCharacterFromFile(); stateUpload.majority = readCharacterFromFile(); // use the addElementFromElement function to add the data to array - printf("\nElement: %d uploaded\n", stateNum); - stateNum = stateNum + 1; addElementFromElement(arrayType, stateUpload); // do until end of the file is reached. } - // return true when completely finished + // return true when completely finished, close file before completion + closeInputFile(); return true; } // return false