/* ECP: FILEname=fig8_36.c */ /* 1*/ const char *States[ ] = /* 2*/ { /* 3*/ "alabama", "alaska", "arizona", "arkansas", "california", /* 4*/ "colorado", "connecticut", "delaware", "florida", "georgia", /* 5*/ "hawaii", "idaho", "illinois", "indiana", "iowa", /* 6*/ "kansas", "kentucky", "louisiana", "maine", "maryland", /* 7*/ "massachusetts", "michigan", "minnesota", "mississippi", /* 8*/ "missouri", "montana", "nebraska", "nevada", "newhampshire", /* 9*/ "newjersey", "newmexico", "newyork", "northcarolina", /*10*/ "northdakota", "ohio", "oklahoma", "oregon", "pennsylvania", /*11*/ "rhodeisland", "southcarolina", "southdakota", "tennessee", /*12*/ "texas", "utah", "vermont", "virginia", "washington", /*13*/ "westvirginia", "wisconsin", "wyoming" /*14*/ }; /*15*/ static const NumStates = sizeof States / sizeof( char * ); /* 1*/ /* Return Position Of A String In An Array Of Strings. */ /* 2*/ /* Array Must Be Sorted; return -1 if Not Found. */ /* 3*/ int /* 4*/ BinarySearch( const char *Str, const char *StrArray[ ], /* 5*/ const unsigned int ArrayLen ) /* 6*/ { /* 7*/ int Low = 0, High = ArrayLen - 1; /* 8*/ int Mid; /* 9*/ int Cmp; /*10*/ while( Low <= High ) /*11*/ { /*12*/ Mid = ( Low + High ) / 2; /*13*/ Cmp = strcmp( Str, StrArray[ Mid ] ); /*14*/ if( Cmp < 0 ) /*15*/ High = Mid - 1; /*16*/ else if( Cmp > 0 ) /*17*/ Low = Mid + 1; /*18*/ else /*19*/ return Mid; /*20*/ } /*21*/ return -1; /* Item Not Found */ /*22*/ }