Je dois utiliser une recherche binaire pour trouver un nom demandé dans un tableau de structures. J'ai utilisé un code d'exemple de recherche binaire qui a cherché ints et l'ai modifié pour rechercher à travers les indecies de tableau pour comparer les noms dans chaque structure. Le programme fonctionne mais le nom n'est jamais trouvé, donc quelque chose ne va vraiment pas bien quelque part. Je ne sais pas si c'est la façon dont je prends le nom du flux ou juste ma mise en œuvre de la recherche en général. Quelqu'un peut-il jeter un coup d'œil pour fournir des informations? grâceAide à la mise en œuvre de la recherche binaire de noms dans un tableau de structures
code relevent de la fonction d'entrée:
char entryName[31];
char discard;
string entryNameString;
cout << "What is the name of the entry you would like to look up?" << endl;
cin >> entryNameString;
cin.get(entryName, 30);
cin.get(discard);
findName(listLength, arrayOfStructs, entryName);
la fonction de recherche binaire:
void findName(int listLength, contactInfo* arrayOfStructs, const char* entryName)
{
bool found = false;
int low = 0, high = listLength-1, mid;
while (!found && low <= high)
{
mid = (low + high)/2;
if (strcmp(entryName, arrayOfStructs[mid].contactName) == 0)
found = true;
else
if (strcmp(entryName, arrayOfStructs[mid].contactName) < 0)
high = mid - 1;
else
low = mid + 1;
}
if (found)
{
cout << arrayOfStructs[mid].contactName << endl;
cout << arrayOfStructs[mid].birthday << endl;
cout << arrayOfStructs[mid].addressInfo.streetName << endl;
cout << arrayOfStructs[mid].addressInfo.cityName << endl;
cout << arrayOfStructs[mid].addressInfo.state << " ";
cout << arrayOfStructs[mid].addressInfo.zipcode << " ";
cout << arrayOfStructs[mid].addressInfo.phoneNumber << endl;
cout << arrayOfStructs[mid].typeOfentry << endl;
}
else
cout << "NOT FOUND" << endl;
}
EDIT:. arrayOfstructs [] contactName est ordonnée par ordre alphabétique (par exemple .contactName = Amanda, est situé dans un index plus petit que .contactName = Zorak)
Est-ce que l'exercice est ici pour écrire votre propre recherche binaire? Sinon, vous pouvez simplement utiliser 'std :: find'. –
Votre tableau est trié par contactName non? –
Étiquette de devoirs nécessaire? – RedX