Komme bei meiner Auswertung nicht weiter



  • Hallo zusammen,

    habe eine Lineare Suche mit 200 zufälligen Werten. Ich möchte nun die Werte durchsuchen und jede Übereinstimmung am Ende Ausgeben mit dem Positionswert.

    Habe den Auszug aus meinem C++ Programm unten aufgeführt. Wenn ich nach einem Treffer abbreche kriege ich das hin aber wie ich nun die Suche fortsetze und alle gefundenen Positionen des Suchkriteriums ausgebe klappt nicht.

    //max. Anzahl an Werten
        const int MAX = 100;
        //ein Feld für die Werte
        int werte[MAX];
        //wurde schon ein Wert gefunden
        bool gefunden = false;
        //für die Suche
        int suchen = 0;
        int kriterium = 0;   
    .
    .
    .
    .
        while (suchen < MAX)
        {
            if (werte[suchen] == kriterium)
            gefunden = true;
            cout <<"Der Wert " << kriterium << " befindet sich an der Position " <<suchen + 1 <<endl;
            suchen ++;
        }
    
        if (gefunden == false)
        cout << "Der Wert " << kriterium << " wurde nicht gefunden." << endl;
        return 0;
    

    Wäre super wenn mir jemand auf die Sprünge helfen könnte, danke.



  • Fehlen da nicht Klammern?

    Scriptlaie schrieb:

    while (suchen < MAX)
        {
            if (werte[suchen] == kriterium)
            {  // <===
               gefunden = true;
               cout <<"Der Wert " << kriterium << " befindet sich an der Position " <<suchen + 1 <<endl;
            }  // <===
            suchen ++;
        }
    


  • du hast genau diese Frage vor ein paar Tagen schonmal gestellt. Was genau hast du nicht verstanden?

    http://www.c-plusplus.net/forum/299873



  • //max. Anzahl an Werten
        const int MAX = 100;
        //ein Feld für die Werte
        int werte[MAX];
        //wurde schon ein Wert gefunden
        bool gefunden = false;
        //für die Suche
        int suchen = 0;
        int kriterium = 0;  
    .
    .
    .
    .
    std::vector<int> hits; // <-- neu
        while (suchen < MAX)
        {
            if (werte[suchen] == kriterium)
            { // <-- neu
                gefunden = true;
                cout <<"Der Wert " << kriterium << " befindet sich an der Position " <<suchen + 1 <<endl;
                hits.push_back(suchen + 1); // <-- neu
            } // <-- neu
            suchen ++;
        }
    
        if (gefunden == true)// <-- neu
        {// <-- neu
            cout << "An folgenden Positionen wurden übereinstimmungen gefunden" << endl;// <-- neu
            for(a = 0; a < hits.end(); a++)// <-- neu
            {// <-- neu
                cout << "Position " << hits[a] << endl;// <-- neu
            }// <-- neu
        }// <-- neu
    
        if (gefunden == false)
        cout << "Der Wert " << kriterium << " wurde nicht gefunden." << endl;
        return 0;
    


  • Oh sorry das war dumm von mir ein neues Thema zu eröffnen.

    Aber habs jetzt geschafft. Danke für die Vector Lösung geht natürlich auch aber habe es jetzt mit einer normalen Schleife hin bekommen.

    Danke


Anmelden zum Antworten