donc j'ai lutté avec cela pour un tarif vieux maintenant et besoin d'aide avec les fonctions bool. Je suis coincé sur la partie recherche des helpers dans pset3. Je sais que ma fonction de tri de sélection fonctionne, car j'ai utilisé printf pour vérifier que les numéros sont triés, et j'ai testé find avec une simple recherche linéaire pour confirmer que cela fonctionnait correctement.CS50 pset3 find renvoie toujours vrai
Mon code de la fonction de recherche est la suivante:
bool search(int value, int values[], int n)
{
// Set upper and lower limits for mid point calculation
int max = n - 1;
int min = 0;
while (min <= max)
{
// Set the mid point of values as half the difference of the upper and lower limit.
int mid = (max - min)/ 2;
// If the array position we look at for this itteration of mid is equal to the value, return true
if (value == values[mid])
return true;
// If the mid value is less than our value, look at the right half (+1 as we dont need to look at the mid point again)
else if (value > values[mid])
return min = mid + 1;
// Same principle but for the left half of the array
else if (value < values [mid])
return max = mid - 1;
}
return false;
}
Pour autant que je peux dire ma logique est saine pour les calculs réels. J'ai essayé un certain nombre de différentes façons de retourner false, comme "if (value < values [mid + 1] & & value> values [mid -1]" pour retourner false mais en vain alors je les ai omis du code ici. Toute aide serait grandement appréciée.
Vive
Tom
Vous étiez sur J'ai essayé de retourner mes nouveaux min et max, qui a été retourné vrai pour n'importe quelle valeur. J'aurais dû repérer que dans tous les cas, il retournait vrai, l'erreur était avec mon utilisation du retour. Merci pour l'aide. – TomForrest