Zähler in Suchprogramm einbinden



  • Wie kann ich zusätzlich anzeigen lassen, wieviel Suchschritte benötigt wurden?

    Mein Ansatz wäre es gewesen, einen Counter, bei jedem Aufruf der While-Schleife um eins zu erhöhen und den Wert nachher auszugeben. Dafür benötige ich aber sicherlich einen Zeiger, oder kann ich der Funktion einen weiteren Ausgabewert zuweisen?

    #include<stdio.h>

    int binsearch(int x, int A[], int n);

    int main()
    {
    int A[] = {2, 5, 9, 18, 23, 34, 36, 99};
    int key;
    int a=0;
    int wert=0;

    printf("Bitte geben Sie die Zahl ein:\n");
    fflush(stdin);
    scanf("%d",&key);
    wert=binsearch(key,A,7);

    if(wert==-1)
    {
    printf("Die Zahl wurde nicht gefunden");
    }
    else
    {
    printf("Der Index ist:%d",wert+1);
    }
    fflush(stdin);
    getchar();
    return 0;
    }

    int binsearch(int x, int A[], int n)
    {
    int links, rechts, mitte;

    links = 0;
    rechts = n - 1;

    while (links <= rechts)
    {
    mitte = (links + rechts) / 2;

    if (x < A[mitte])
    rechts = mitte - 1;
    else if (x > A[mitte])
    links = mitte + 1;
    else
    return mitte;
    }

    return -1;
    }



  • Ja, dafür benötigst du einen Zeiger (bzw. eine Referenz, falls das Zählen der Suchschritte nicht optional sein soll).
    Zwei Rückgabewerte kannst du mit Umweg über pair erreichen (pair<int,int>), ist aber in diesem Fall eher weniger angebracht.


Anmelden zum Antworten