2017-03-01 4 views
-1

, also habe ich mit diesem für einen alten Tarif gekämpft, während jetzt und etwas Hilfe mit bool Funktionen brauchen. Ich bin auf der Suche Teil der Helfer in pset3 fest.CS50 pset3 findet immer wahr

Ich weiß meine Auswahl Sortierfunktion funktioniert, wie ich printf verwendet, um zu überprüfen, die Zahlen sortiert werden, und ich testete finden mit einer einfachen linearen Suche, um zu bestätigen, dass es richtig funktioniert.

Mein Code für die Suchfunktion ist wie folgt:

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; 

}

Soweit ich meine Logik für die eigentlichen Berechnungen wird der Ton sagen kann. Ich habe versucht, eine Anzahl von verschiedenen Möglichkeiten der Rückgabe false, wie "Wenn (Wert < Werte [Mitte + 1] & & Wert> Werte [Mitte -1]", um falsch, aber ohne Erfolg zurück, so habe ich sie weggelassen aus dem Code hier. Jede Hilfe wäre sehr geschätzt.

Prost

Tom

Antwort

0

ich habe die Logik des Codes nicht aktiviert, aber Sie können eine Funktion nicht gesetzt bool zurückzukehren, aber Verwenden Sie es auch, um Zahlen wie in zurückgeben Min = Mid + 1; Oder in Return Max = Mitte - 1;

Setzen Sie die Funktion einfach auf int und geben Sie 1 und 0 als wahr und falsch an.

Auch C nicht über Boolesche Typen, wenn Sie sie in Ihrem Code definieren oder importieren stdbool.h

Edit: gerade daran erinnert, dass Sie die Signatur der Funktion ändern können, so versuchen Erstellen Sie eine eigene Funktion und rufen Sie sie dann innerhalb der bereits definierten Suchfunktion auf.

+0

Sie waren genau an der Stelle, die ich versuchte, meine neue Min und Max, die für jeden Wert wahr zurückgegeben wurde. Ich hätte feststellen müssen, dass es in allen Fällen, in denen es sich um eine echte Rückkehr handelte, der Fehler bei meiner Rückkehr war. Danke für die Hilfe. – TomForrest