Initialize PA10, STUB Functions
++ PA10 Files ++ Makefile for PA10
This commit is contained in:
parent
d9e90f6501
commit
91ce50b189
17 changed files with 4154 additions and 0 deletions
240
PA10-1115/PA10_Main.c
Normal file
240
PA10-1115/PA10_Main.c
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
// header files
|
||||
#include "File_Input_Utility.h"
|
||||
#include "HashUtility.h"
|
||||
|
||||
// constants
|
||||
extern const int ITEM_NOT_FOUND;
|
||||
extern const bool USED_NODE;
|
||||
extern const bool UNUSED_NODE;
|
||||
|
||||
// prototypes
|
||||
void getQueryObject( StateDataType *returnedState, const char *stateName );
|
||||
ProbingHashType *uploadData( char *fileName, int tableSize, int probeType );
|
||||
|
||||
// main function
|
||||
int main( int argc, char *argv[] )
|
||||
{
|
||||
ProbingHashType *hashTest;
|
||||
StateDataType toRemove, removed, toFind, found;
|
||||
char toRemoveStr[ MAX_STR_LEN ], removedStr[ MAX_STR_LEN ];
|
||||
char toFindStr[ MAX_STR_LEN ], foundStr[ MAX_STR_LEN ];
|
||||
int primeTableSize = 67; // recommended to be prime number (or at least odd)
|
||||
// and roughly 1.3x the size of the data set
|
||||
|
||||
// title
|
||||
printf( "\nHASH TABLE TEST PROGRAM\n" );
|
||||
printf( "=======================\n" );
|
||||
|
||||
hashTest = uploadData( "inData.csv", primeTableSize, QUADRATIC_PROBING );
|
||||
|
||||
// display array dump
|
||||
displayHashTable( hashTest );
|
||||
|
||||
// show hash table status
|
||||
showHashTableStatus( *hashTest );
|
||||
|
||||
printf( "\n\nFinding Selected States ----------------------------------\n" );
|
||||
|
||||
privateCopyString( toFindStr, "Arizona" );
|
||||
getQueryObject( &toFind, toFindStr );
|
||||
found = findItem( hashTest, toFind );
|
||||
stateDataToString( foundStr, found );
|
||||
printf( "Found: %s\n", foundStr );
|
||||
|
||||
privateCopyString( toFindStr, "Iowa" );
|
||||
getQueryObject( &toFind, toFindStr );
|
||||
found = findItem( hashTest, toFind );
|
||||
stateDataToString( foundStr, found );
|
||||
printf( "Found: %s\n", foundStr );
|
||||
|
||||
privateCopyString( toFindStr, "Minnesota" );
|
||||
getQueryObject( &toFind, toFindStr );
|
||||
found = findItem( hashTest, toFind );
|
||||
stateDataToString( foundStr, found );
|
||||
printf( "Found: %s\n", foundStr );
|
||||
|
||||
printf( "\n\nRemoving Selected States ----------------------------------\n" );
|
||||
|
||||
privateCopyString( toRemoveStr, "Texas" );
|
||||
getQueryObject( &toRemove, toRemoveStr );
|
||||
if( removeState( &removed, toRemove, *hashTest ) )
|
||||
{
|
||||
stateDataToString( removedStr, removed );
|
||||
printf( "---Removed: %s\n", removedStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "---Failed to remove %s\n", toRemoveStr );
|
||||
}
|
||||
|
||||
privateCopyString( toRemoveStr, "New Mexico" );
|
||||
getQueryObject( &toRemove, toRemoveStr );
|
||||
if( removeState( &removed, toRemove, *hashTest ) )
|
||||
{
|
||||
stateDataToString( removedStr, removed );
|
||||
printf( "---Removed: %s\n", removedStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "---Failed to remove %s\n", toRemoveStr );
|
||||
}
|
||||
|
||||
privateCopyString( toRemoveStr, "Washington" );
|
||||
getQueryObject( &toRemove, toRemoveStr );
|
||||
if( removeState( &removed, toRemove, *hashTest ) )
|
||||
{
|
||||
stateDataToString( removedStr, removed );
|
||||
printf( "---Removed: %s\n", removedStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "---Failed to remove %s\n", toRemoveStr );
|
||||
}
|
||||
|
||||
privateCopyString( toRemoveStr, "Maryland" );
|
||||
getQueryObject( &toRemove, toRemoveStr );
|
||||
if( removeState( &removed, toRemove, *hashTest ) )
|
||||
{
|
||||
stateDataToString( removedStr, removed );
|
||||
printf( "---Removed: %s\n", removedStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "---Failed to remove %s\n", toRemoveStr );
|
||||
}
|
||||
|
||||
privateCopyString( toRemoveStr, "Florida" );
|
||||
getQueryObject( &toRemove, toRemoveStr );
|
||||
if( removeState( &removed, toRemove, *hashTest ) )
|
||||
{
|
||||
stateDataToString( removedStr, removed );
|
||||
printf( "---Removed: %s\n", removedStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "---Failed to remove %s\n", toRemoveStr );
|
||||
}
|
||||
|
||||
privateCopyString( toRemoveStr, "Quebec" );
|
||||
getQueryObject( &toRemove, toRemoveStr );
|
||||
if( removeState( &removed, toRemove, *hashTest ) )
|
||||
{
|
||||
stateDataToString( removedStr, removed );
|
||||
printf( "---Removed: %s\n", removedStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "---Failed to remove %s\n", toRemoveStr );
|
||||
}
|
||||
|
||||
// display array dump
|
||||
displayHashTable( hashTest );
|
||||
|
||||
// show hash table status
|
||||
showHashTableStatus( *hashTest );
|
||||
|
||||
// end program
|
||||
|
||||
// clear hash table
|
||||
clearHashTable( hashTest );
|
||||
|
||||
// show program end
|
||||
printf( "\nEnd Program\n" );
|
||||
|
||||
// return success
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void getQueryObject( StateDataType *returnedState, const char *stateName )
|
||||
{
|
||||
setDataNodeFromData( returnedState, stateName, 0.0, 0.0, 0.0, 0.0 );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Name: getDataFromFile
|
||||
Process: uploads data from file with unknown number of data sets,
|
||||
has internal Verbose Boolean to display input operation
|
||||
Function input/parameters: file name (char *)
|
||||
Function output/parameters: none
|
||||
Function output/returned: pointer to hash table (ProbingHashType *)
|
||||
Device input/file: data from HD
|
||||
Device output/monitor: none
|
||||
Dependencies: initializeHashTable, openInputFile, readStringToDelimiterFromFile,
|
||||
readDoubleFromFile, readCharacterFromFile, printf,
|
||||
addItemFromData, closeInputFile, free
|
||||
*/
|
||||
ProbingHashType *uploadData( char *fileName, int tableSize, int probeType )
|
||||
{
|
||||
char stateNameStr[ MAX_STR_LEN ];
|
||||
double avgTemp, lowestTemp, highestTemp;
|
||||
int index = 0;
|
||||
bool verbose = true; // Set to true to verify data upload, false otherwise
|
||||
ProbingHashType *tempHashPtr = initializeHashTable( tableSize, probeType );
|
||||
|
||||
if( openInputFile( fileName ) )
|
||||
{
|
||||
if( verbose )
|
||||
{
|
||||
printf( "\n ----- Verbose: Begin Loading Data From File\n" );
|
||||
}
|
||||
|
||||
// get first state name
|
||||
readStringToDelimiterFromFile( COMMA, stateNameStr );
|
||||
|
||||
while( !checkForEndOfInputFile() )
|
||||
{
|
||||
avgTemp = readDoubleFromFile();
|
||||
|
||||
// ignores comma
|
||||
readCharacterFromFile();
|
||||
|
||||
lowestTemp = readDoubleFromFile();
|
||||
|
||||
// ignores comma
|
||||
readCharacterFromFile();
|
||||
|
||||
highestTemp = readDoubleFromFile();
|
||||
|
||||
if( verbose )
|
||||
{
|
||||
printf( "State Name: %s | ", stateNameStr );
|
||||
|
||||
printf( "Average Temp: %5.2f | ", avgTemp );
|
||||
|
||||
printf( "Lowest Temp: %5.2f | ", lowestTemp );
|
||||
|
||||
printf( "Highest Temp: %5.2f\n", highestTemp );
|
||||
}
|
||||
|
||||
// add to hash table
|
||||
addItemFromData( tempHashPtr, stateNameStr,
|
||||
avgTemp, lowestTemp, highestTemp );
|
||||
|
||||
// reprime - read next state name
|
||||
readStringToDelimiterFromFile( COMMA, stateNameStr );
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
if( verbose )
|
||||
{
|
||||
printf( "\n ----- Verbose: Items found in file: %d\n", index );
|
||||
printf( " ----- Verbose: End Loading Data From File\n\n" );
|
||||
}
|
||||
|
||||
closeInputFile();
|
||||
}
|
||||
|
||||
// file not found
|
||||
else
|
||||
{
|
||||
free( tempHashPtr );
|
||||
}
|
||||
|
||||
return tempHashPtr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue