Suchproblem



  • Hallo ich habe ein kleines Problem und zwar will ich meine suche so erweitern, dass sie nicht beim ersten gefundenen abbricht. Könnt Ihr mir da helfen?



  • RealFeejay schrieb:

    Hallo ich habe ein kleines Problem und zwar will ich meine suche so erweitern, dass sie nicht beim ersten gefundenen abbricht. Könnt Ihr mir da helfen?

    Ich habe erstmal cpp-Tags in deinen Post eingebaut (siehe auch BITTE die beiden Links in meiner Signatur). Nun zu deiner Frage: Nein, da kann dir so erstmal nur schwer geholfen werden. Dein Code sieht arg wirr aus. Was willst du erreichen?



  • RealFeejay, der Code ist wirklich furchtbar zusammenkopiert. Das bricht beim ersten Treffer ab? Unmöglich. Das dürfte nicht mal ausgeführt werden. Du hast Speicherzugriffsverletzung in Zeile 20 (danke pumuckl). Also bitte schreib deinen Code so um, dass er zumindest compiliert werden kann. Dann schauen wir weiter.



  • Probier es doch mal so:

    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    
    using namespace std;
    
    int main()
    {
        char weitersuche;
        const int MAX = 100;
        int werte[MAX];
        bool gefunden = false;
        int suchen = 0;
        int kriterium = 0;
    
        srand(time(NULL));
    
        cout <<"Lineare Suche" << endl;
    
        cout << "Die Werte sind; " << endl;
    
        for(int index = 0; index < MAX; index++)
        {
            cout << werte[index] << ' ';
        }
    
        cout << endl;
    
        cout << "Wonach soll gesucht werden? ";
    
        cin >> kriterium;
    
        while ((suchen < MAX))
        {
            if (werte[suchen] == kriterium)
            {
                gefunden = true;
    
                cout << "Der Wert " << kriterium << " befindet sich an Position " << suchen + 1 << endl;
            }
    
            suchen++;
        }
    
        if (!gefunden)
        {
            cout << "Der Wert " << kriterium << " wurde nicht gefunden. " << endl;
        }
    
        return 0;
    }
    

    Du solltest dir unbedingt angewöhnen, richtig einzurücken. Das macht den Code um einiges übersichtlicher.



  • Warum nicht gleich C++ programmieren?

    #include <ctime>
    #include <vector>
    #include <iostream>
    #include <iterator>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
       // Zufallsgenerator initialisieren
       srand( time( 0 ) );
    
       // Vektor mit 100 Elementen erzeugen und mit Zufallswerte füllen
       vector<int> Werte( 100 );
       generate( Werte.begin(), Werte.end(), rand );
    
       // Ausgabe der Zufallswerte
       cout << "Lineare Suche\n"
            << "Die Werte sind: " << endl;
       copy( Werte.begin(), Werte.end(), ostream_iterator<int>( cout, " " ) );
    
       // Eingabe des Suchkriteriums
       int Kriterium = 0;
       cout << "\nBitte geben Sie das Suchkriterium ein: ";
       cin >> Kriterium;
    
       // erstes Vorkommen finden
       vector<int>::iterator pos = find( Werte.begin(), Werte.end(), Kriterium );
       if( pos != Werte.end() )
       {
          // es existiert mind. ein Treffer, aktuellen Treffer ausgeben und weitere Treffer suchen
          while( pos != Werte.end() )
          {
             cout << "Der Wert " << Kriterium << " wurde an Position " << distance( Werte.begin(), pos ) << " gefunden." << endl;
             pos = find( pos +1, Werte.end(), Kriterium );
          }
       }
       else
       {
          // es existiert kein Treffer
          cout << "Der Wert " << Kriterium << " wurde nicht gefunden." << endl;
       }
    }
    

    @TE
    Du solltest dich in die STL einlesen, um den Umgang mit den Standardcontainern, Algorithmen und dem Iteratorkonzept zu lernen. Die STL bietet für viele triviale Aufgaben bereits fertige Funktionen, sodass man selbst nur wenig programmieren muss.



  • Sehr vielen dank. Es hat funktioniert. 😉



  • DocShoe, glaubst du, das war die optimale Hilfe..?



  • Rew. schrieb:

    DocShoe, glaubst du, das war die optimale Hilfe..?

    Nö, mit Sicherheit nicht. Vielleicht hat TE was gelernt, wahrscheinlich nicht.
    Aber wenn schon eine vollständige C/C++ Mischmaschlösung gepostet wurde dann kann man ruhig eine C++ Lösung dazuschreiben...

    Edit:
    Vielleicht lässt sich der Lehrer ja den Quellcode erklären, dann wäre ich gern dabei 😃


Log in to reply